Экземпляр модели Django из набора запросов не обновляется при сохранении ()

#python #django

#python #django

Вопрос:

У меня есть следующий код

 VocabFromDatabase = Vocab.objects.filter(User = U, IsCard = True).order_by("LastStudyDate")
VocabFromDatabase[0].Mnem = "Passed"
VocabFromDatabase[0].save()
 

Согласно документам save () должен сохранять изменения, но, похоже, он молча терпит неудачу. После некоторой возни кажется, что проблема не в save(), а в присвоении значения свойству одного из объектов из набора запросов. Однако везде, где я смотрю, мне говорят либо использовать update() (который, я думаю, обновит все объекты в наборе запросов, чего я не хочу), либо что save() должен работать.

Есть ли что-то, о чем я не знаю, или что-то, что я здесь делаю неправильно?

Комментарии:

1. .filter выдает список словарей с отфильтрованными значениями. Используется .update для обновления значения

Ответ №1:

Похоже, что установка поля имени модели и вызов метода сохранения модели выполняются для 2 отдельных ссылок на модель. Каждый раз, когда вы выбираете via [index] , набор запросов возвращается из своего кэша.

https://docs.djangoproject.com/en/2.1/topics/db/queries/#when-querysets-are-not-cached

 queryset[0].name = "foo" // <Model pk=1 name="foo">
queryset[0].save() // <Model pk=1 name=default> SAVED