Встречается на собеседованиях • сегодня
При сохранении новой записи Django получает ID или БД генерирует этот ID
Django не генерирует ID самостоятельно - это делает база данных при вставке новой записи. Django лишь получает сгенерированный ID после сохранения объекта.
При вызове save() происходит:
- Формируется SQL-запрос INSERT
- База данных создает запись и генерирует первичный ключ (обычно автоинкрементное поле)
- 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 генерируется на стороне БД.

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы