Чи можливо оновити стан об'єкта django з бази даних? Я маю на увазі поведінку, приблизно еквівалентну:
new_self = self.__class__.objects.get(pk=self.pk)
for each field of the record:
setattr(self, field, getattr(new_self, field))
ОНОВЛЕННЯ: В трекері знайдено війну, що відкрилася / повторилася: http://code.djangoproject.com/ticket/901 . Досі не розумію, чому технічному обслуговуванню це не подобається.
Це здається непотрібною функцією; вже можна просто переглянути об’єкт із бази даних.
—
Стефан
Це не доречно, оскільки об'єкти моделі Джанго - це проксі. Якщо ви отримуєте однаковий рядок таблиці на два об’єкти - x1 = X.objects.get (id = 1); x2 = X.objects.get (id = 1), вони перевіряться рівними, але вони є різними об'єктами, і стан не поділяється. Ви можете змінити обидва незалежно та зберегти їх - останній збережений визначає стан рядка в базі даних. Тому правильно перезавантажити простим завданням - x1 = X.objects.get (id = 1). Наявність методу перезавантаження призведе до того, що багато людей помилково роблять висновок, що x1.f = 'нове значення'; (x1.f == x2.f) - Істинно.
—
Пол Віпп
commmit
. Після цього вам доведеться почекати наступної транзакції SQL. Навіщо це робити? Як довго ви будете чекати наступної транзакції?