Ответ 1
Это на странице Ссылка на API QuerySet, связанная с индексом документации.
Я всегда читал, что я должен использовать
model = Model(a=5, b=6)
model.save()
Но я просто видел, что есть функция менеджера, потому что я видел приложение django с открытым исходным кодом, использующее его.
model = Model.objects.create(a=5, b=6)
print model.pk
1
Так предлагается ли это использовать? Или еще предпочитает использовать метод .save. Я предполагаю, что object.create попытается создать его независимо от того, что бы сохранить, тогда как сохранение может сохранить существующий объект, если указан 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)
Force_insert означает, что новый объект всегда будет создан.
Обычно вам не нужно беспокоиться об этом. Однако, если ваша модель содержит введенное вручную значение первичного ключа, и если это значение уже существует в базе данных, вызов create() завершится неудачей с IntegrityError, поскольку первичные ключи должны быть уникальными. Будьте готовы к обрабатывать исключение, если вы используете ручные первичные ключи.
В принципе, эти два метода эквивалент. Использование Model.objects.create
может быть предпочтительным, поскольку оно больше подходит для стиля Django.
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
он создает экземпляр, а затем сохраняет его.