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

При сохранении новой записи Django получает ID или БД генерирует этот ID

Django не генерирует ID самостоятельно - это делает база данных при вставке новой записи. Django лишь получает сгенерированный ID после сохранения объекта.

При вызове save() происходит:

  1. Формируется SQL-запрос INSERT
  2. База данных создает запись и генерирует первичный ключ (обычно автоинкрементное поле)
  3. Django получает этот ID и устанавливает его в поле id модели

Пример:

python
obj = MyModel(name='test')
print(obj.id)  # None - ID еще нет
obj.save()     # Выполняется INSERT
print(obj.id)  # Получен ID от БД (например 1)

Это поведение зависит от используемой БД. В PostgreSQL/SQLite используется автоинкремент, в MySQL - AUTO_INCREMENT, но принцип везде одинаковый: ID генерируется на стороне БД.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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