Zawsze czytałem, że powinienem użyć
model = Model(a=5, b=6)
model.save()
Ale właśnie zobaczyłem, że jest utworzona funkcja menedżera, ponieważ widziałem używającą jej aplikację open source django.
model = Model.objects.create(a=5, b=6)
print model.pk
1
Więc czy sugeruje się jego użycie? Czy nadal preferowane jest użycie metody .save. Domyślam się, że objects.create spróbuje go utworzyć bez względu na wszystko, podczas gdy save może zapisać istniejący obiekt, jeśli określono pk.
Oto dokumenty, które znalazłem: https://docs.djangoproject.com/en/dev/topics/db/queries/#creating-objects
Odpowiedzi:
Znajduje się na stronie „QuerySet API reference” , do której link znajduje się w indeksie dokumentacji.
źródło
p = Person.objects.create(first_name="Bruce", last_name="Springsteen")
równoważny:
p = Person(first_name="Bruce", last_name="Springsteen") p.save(force_insert=True)
źródło
create zasadniczo robi to samo. poniżej znajduje się kod źródłowy do tworzenia.
def create(self, **kwargs): """ Creates a new object with the given kwargs, saving it to the database and returning the created object. """ obj = self.model(**kwargs) self._for_write = True obj.save(force_insert=True, using=self.db) return obj
tworzy instancję, a następnie ją zapisuje.
źródło
Zasadniczo te dwie metody są równoważne . Użycie
Model.objects.create
może być preferowane, ponieważ bardziej pasuje do stylu Django.źródło