Ist es möglich, den Status eines Django-Objekts aus der Datenbank zu aktualisieren? Ich meine Verhalten, das ungefähr gleichbedeutend ist mit:
new_self = self.__class__.objects.get(pk=self.pk)
for each field of the record:
setattr(self, field, getattr(new_self, field))
UPDATE: Im Tracker wurde ein Wiedereröffnungs- / Wontfix-Krieg gefunden: http://code.djangoproject.com/ticket/901 . Ich verstehe immer noch nicht, warum die Betreuer das nicht mögen.
python
django
django-models
grep
quelle
quelle
commmit
. Sobald Sie dies getan haben, müssen Sie warten, bis die nächste SQL-Transaktion festgeschrieben wird. Warum das tun? Wie lange warten Sie auf die nächste Transaktion?Antworten:
Ab Django 1.8 sind Aktualisierungsobjekte integriert. Link zu Dokumenten .
quelle
refresh_from_db
aktualisiert nur solche bereits ausgefüllten Felder.DoesNotExist
Ausnahme ausgelöst, wenn das zugrunde liegende Objekt beim Aufruf gelöscht wurderefresh_from_db
. Zu Ihrer Information.Ich fand es relativ einfach, das Objekt wie folgt aus der Datenbank neu zu laden :
quelle
refresh_from_db
löst all diese Probleme.Sollte es in Bezug auf den Kommentar von @ grep nicht möglich sein, Folgendes zu tun:
quelle
refresh_from_db
Methode.Wie @Flimm betonte, ist dies eine wirklich großartige Lösung:
Dadurch werden alle Daten aus der Datenbank in das Objekt neu geladen.
quelle