Ответ 1
Документация Django говорит, что это то же самое. Это просто более удобно, чтобы сделать его на одной строке. Вы могли бы сделать save()
на одной строке, но это было бы более подробным и менее читаемым - ясно, что вы создаете новый объект с помощью метода create()
.
create(**kwargs)
Удобный метод для создания объекта и сохранения его в одном шаг. Таким образом:
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
, поскольку первичные ключи должны быть уникальными. Будьте готовы обработать исключение, если вы используете ручные первичные ключи.