#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