Можно ли обновить состояние объекта django из базы данных? Я имею в виду поведение примерно эквивалентно:
new_self = self.__class__.objects.get(pk=self.pk)
for each field of the record:
setattr(self, field, getattr(new_self, field))
ОБНОВЛЕНИЕ: обнаружен переоткрытый / wontfix войны в трекере: http://code.djangoproject.com/ticket/901 . До сих пор не понимаю, почему сопровождающим это не нравится.
commmit
. Как только вы это сделаете, вам придется подождать, пока следующая транзакция SQL не будет зафиксирована. Зачем это делать? Как долго вы собираетесь ждать следующей транзакции?Ответы:
Начиная с Django 1.8, встроены объекты обновления. Ссылка на документацию .
источник
refresh_from_db
будет обновлять только такие уже заполненные поля.DoesNotExist
исключение, если базовый объект был удален при вызовеrefresh_from_db
. FYI.Я обнаружил, что сравнительно легко перезагрузить объект из базы данных примерно так:
источник
refresh_from_db
решает все эти проблемы.Что касается комментария @ grep, то нельзя ли это сделать:
источник
refresh_from_db
метод.Как отметил @Flimm, это действительно потрясающее решение:
Это перезагрузит все данные из базы данных в объект.
источник