Heim > Artikel > Backend-Entwicklung > Fehler in Djangos gleichzeitigen Update- und save()-Funktionen
save() Standardmäßig sehen Sie nach dem Speichern, dass alle Felder in der SQL-Anweisung aktualisiert wurden und der Wert des Speicherns der Feldwert ist, als er zuvor abgerufen wurde. Es wird zwischengespeichert und ist nicht unbedingt der neueste . Möglicherweise wurde es an anderer Stelle im Prozess aktualisiert
UPDATE `pxb_sx2_test` SET `user_id` = 335, `catalog_id` = 12558, `level_id` = 4, `level_status` = 0, `position` = 440, `type` = 2, `add_time` = '2016-09-14 17:44:07', `update_time` = '2016-09-14 17:53:17.077520' WHERE `pxb_sx2_test`.`id` = 175;
Update aktualisiert das angegebene Feld
UPDATE `pxb_sx2_test` SET `position` = 441 WHERE `pxb_sx2_test`.`id` = 1751;
Wenn die beiden gleichzeitig oder an verschiedenen Orten verwendet werden, aber sie Möglicherweise wird gleichzeitig aktualisiert. Es besteht die Möglichkeit einer Aktualisierung, der Wert in der Datenbank ändert sich jedoch nicht. Tatsächlich wurde nach der Aktualisierung der veraltete Feldwert gespeichert, sodass es den Anschein hatte, als wäre er nicht aktualisiert worden. Nach Django 1.5 kann save Parameter hinzufügen, um nur bestimmte Felder zu aktualisieren. Referenz
test.position = 441 test.save(update_fields=['position'])