Подтвердить что ты не робот

Диспетчер модели Django objects.create где находится документация?

Я всегда читал, что я должен использовать

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

4b9b3361

Ответ 2

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, поскольку первичные ключи должны быть уникальными. Будьте готовы к обрабатывать исключение, если вы используете ручные первичные ключи.

Ответ 3

В принципе, эти два метода эквивалент. Использование Model.objects.create может быть предпочтительным, поскольку оно больше подходит для стиля Django.

Ответ 4

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

он создает экземпляр, а затем сохраняет его.