Встречается на собеседованиях • сегодня

Как при вызове метода модели save Django определяет вызывать sort или update

Django автоматически определяет, вызывать INSERT или UPDATE, проверяя первичный ключ (pk) объекта модели:

  • Если pk равен None или не существует в БД — выполняется INSERT (создание новой записи).
  • Если pk существует в БД — выполняется UPDATE (обновление существующей записи).

Пример:

python
# INSERT (новая запись)
new_obj = MyModel(name="New")
new_obj.save()  # Django выполнит INSERT

# UPDATE (существующая запись)
existing_obj = MyModel.objects.get(pk=1)
existing_obj.name = "Updated"
existing_obj.save()  # Django выполнит UPDATE

Нюансы:

  • Можно явно указать force_insert=True или force_update=True в save().
  • Если force_insert используется для существующего объекта, выбросится исключение.
  • При обновлении Django обновляет только измененные поля (оптимизация).
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы