Wie führe ich eine update
und select
-Anweisung auf demselben aus, queryset
anstatt zwei Abfragen ausführen zu müssen: - eine zum Auswählen des Objekts - und eine zum Aktualisieren des Objekts
Das Äquivalent in SQL wäre etwa:
update my_table set field_1 = 'some value' where pk_field = some_value
update
Methode verwenden, werden alle an dieses Modell oder andere "Code-Inhalte" angehängten Signale nicht gegen die Objekte ausgeführt. Nur einupdate
Methode eignet sich hervorragend für Massenaktualisierungen, sollte jedoch eine Warnung in Ihrem KopfMyModel.objects.filter(pk=some_value).update(field1=self.data)
Django-Datenbankobjekte verwenden dieselbe save () -Methode zum Erstellen und Ändern von Objekten.
Ref.: Https://docs.djangoproject.com/de/1.9/ref/models/instances/
quelle
Diese Antwort vergleicht die beiden oben genannten Ansätze. Wenn Sie viele Objekte in einer einzigen Zeile aktualisieren möchten, gehen Sie wie folgt vor:
Andernfalls müssten Sie den Abfragesatz durchlaufen und einzelne Objekte aktualisieren:
Ansatz 1 ist schneller, da nur eine Datenbankabfrage durchgeführt wird, im Vergleich zu Ansatz 2, bei dem 'n + 1'-Datenbankabfragen durchgeführt werden. (Für n Elemente im Abfragesatz)
Der erste Ansatz führt eine Datenbankabfrage durch, dh UPDATE, der zweite zwei: SELECT und dann UPDATE.
Der Nachteil ist, dass, vorausgesetzt, Sie haben Auslöser wie Aktualisierungen
updated_on
oder ähnliche verwandte Felder, diese bei der direkten Aktualisierung, dh bei Ansatz 1, nicht ausgelöst werden.Ansatz 1 wird in einem Abfragesatz verwendet, sodass es möglich ist, mehrere Objekte gleichzeitig zu aktualisieren, nicht im Fall von Ansatz 2.
quelle
Nur in einem Fall
serializer
können Sie auf sehr einfache Weise aktualisieren!nur in einem Fall in
form
Dingen!quelle
Django form
ist von Django Proper.