Was ist der beste Weg, um ein Modell-Objekt in Django?
Author.objects.create(name="Joe")
oder
an_author = Author(name="Joe")
an_author.save()
Was ist der Unterschied zwischen diesen beiden?
Welches ist besser?
Ähnliche Fragen:
- Unterschied zwischen Objekten.create() und Objekt.save() in django orm
- Django: Unterschied zwischen save() und create() aus der Transaktion Perspektive
- möglich, Duplikat der Django: Unterschied zwischen save() und create() aus der Transaktion Perspektive
Du musst angemeldet sein, um einen Kommentar abzugeben.
create()
ist wie ein wrapper übersave()
Methode.Django 1.8 source code für
create()
Funktion:Für
create()
, eineforce_insert
parameter übergeben wird beim Aufrufsave()
intern die Kräfte dersave()
Methode führen Sie eine SQL -INSERT
und nicht führen Sie eineUPDATE
. Es wird zwangsweise eine neue Zeile einfügen in die Datenbank.Für
save()
entweder eineUPDATE
oderINSERT
durchgeführt werden je nach Objekt Primärschlüssel-Attribut-Wert.Erstellen, ist nur ein Komfort-proxy für die Erstellung eines neuen Objekts mit kwargs. Wie Sie unten sehen können, es ruft
save()
für Sie:Vom Django Quelle:
Eine Sache zu beachten ist die force_insert argument zu speichern. Dies bedeutet, dass Django wird immer verwenden Sie eine INSERT-sql-Anweisung hier-und nicht um ein UPDATE. Der Standard ist false, also in Ihrem zweiten Beispiel save() wird INSERT-oder UPDATE.
Dem ersten von Ihnen sind mit der
Manager
Methodecreate
. Es ist bereits umgesetzt für Sie und es wird automatisch gespeichert.Die zweite Methode erstellen Sie eine Instanz der Klasse
Author
dann Sie anrufen, speichern.Also abschließend
Author.objects.create(name="Joe")
erstellen --> speichern()den anderen eine erste Linie zu schaffen, und die zweite Zeile Speichere.
in einigen Fällen, Sie müssen rufen Sie die manager-Methode immer. Zum Beispiel, müssen Sie den hash des Kennworts.
Also im Grunde, in Ihren Modellen zu denken als setter. Wenn Sie möchten, ändern Sie die Daten immer, während die Bildung verwenden Sie dann Manager.