Я всегда читаю, что мне следует использовать
model = Model(a=5, b=6)
model.save()
Но я только что увидел, что есть функция менеджера, потому что я видел, как приложение django с открытым исходным кодом использует ее.
model = Model.objects.create(a=5, b=6)
print model.pk
1
Так предлагается ли его использовать? Или все же предпочтительнее использовать метод .save. Я предполагаю, что objects.create попытается создать его несмотря ни на что, тогда как save может сохранить существующий объект, если указан pk.
Это документы, которые я нашел: https://docs.djangoproject.com/en/dev/topics/db/queries/#creating-objects
Ответы:
Он находится на странице «Справочник по API QuerySet» , ссылка на которую находится в указателе документации.
источник
p = Person.objects.create(first_name="Bruce", last_name="Springsteen")
эквивалент:
p = Person(first_name="Bruce", last_name="Springsteen") p.save(force_insert=True)
источник
create по сути делает то же самое. ниже - исходный код для создания.
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
он создает экземпляр, а затем сохраняет его.
источник
По сути, эти два метода эквивалентны . Использование
Model.objects.create
может быть предпочтительным, поскольку оно больше соответствует стилю Django.источник