Apakah mungkin untuk menyegarkan keadaan objek Django dari database? Maksud saya perilaku kira-kira setara dengan:
new_self = self.__class__.objects.get(pk=self.pk)
for each field of the record:
setattr(self, field, getattr(new_self, field))
UPDATE: Menemukan perang membuka kembali / memperbaiki wont di pelacak: http://code.djangoproject.com/ticket/901 . Masih tidak mengerti mengapa pengelola tidak menyukai ini.
python
django
django-models
grep
sumber
sumber
commmit
. Setelah Anda selesai melakukannya, Anda harus menunggu untuk melakukan transaksi SQL berikutnya. Kenapa melakukan itu? Berapa lama Anda akan menunggu transaksi selanjutnya?Jawaban:
Pada Django 1.8 objek yang menyegarkan dibangun. Tautan ke dokumen .
sumber
refresh_from_db
hanya akan memperbarui bidang yang sudah diisi tersebut.DoesNotExist
pengecualian dengan benar melempar jika objek yang mendasarinya dihapus saat memanggilrefresh_from_db
. FYI.Saya merasa relatif mudah untuk memuat ulang objek dari database seperti:
sumber
refresh_from_db
menyelesaikan semua masalah ini.Mengacu pada komentar @ grep, seharusnya tidak mungkin dilakukan:
sumber
refresh_from_db
metode.Sebagaimana @Flimm tunjukkan, ini adalah solusi yang sangat hebat:
Ini memuat ulang semua data dari database ke objek.
sumber