Bir django nesnesinin durumunu veritabanından yenilemek mümkün mü? Demek istediğim davranış kabaca eşdeğer:
new_self = self.__class__.objects.get(pk=self.pk)
for each field of the record:
setattr(self, field, getattr(new_self, field))
GÜNCELLEME: İzleyicide yeniden açma / alıştırma yapma savaşı bulundu: http://code.djangoproject.com/ticket/901 . Korucuların neden bu kadar hoşlanmadığını hala anlamıyorum.
Bu gereksiz bir işlev gibi görünüyor; nesneyi veritabanından yeniden aramak zaten mümkündür.
—
Stephan
Bu uygun değildir çünkü Django model nesneleri proxy'lerdir. Aynı tablo satırını iki nesneye alırsanız - x1 = X.objects.get (id = 1); x2 = X.objects.get (id = 1), eşit olarak test ederler, ancak farklı nesnelerdir ve durum paylaşılmaz. Hem bağımsız olarak değiştirebilir hem de kaydedebilirsiniz - son kaydedilen, veritabanındaki satırın durumunu belirler. Bu nedenle basit atama ile yeniden yüklemek doğrudur - x1 = X.objects.get (id = 1). Yeniden yükleme yöntemine sahip olmak birçok insanın yanlış x1.f = 'yeni değer' anlamına gelmesini sağlar; (x1.f == x2.f) Doğru.
—
Paul Whipp
commmit
. Bunu yaptıktan sonra, bir sonraki SQL işleminin gerçekleşmesini beklemek zorunda kalacaksınız. Neden bunu yapıyorsun? Bir sonraki işlemi ne kadar bekleyeceksiniz?