bulk_create вставляет объекты пакетами без вызова обычного save() и модельных сигналов. Заполнение автоматически созданных primary key в объектах зависит от СУБД и режима обработки конфликтов.
Как в Django ORM работает метод `bulk_create` и какие ограничения он накладывает на автоинкрементные ключи?
bulk_create вставляет объекты пакетами без вызова обычного save() и модельных сигналов. Заполнение автоматически созданных primary key в объектах зависит от СУБД и режима обработки конфликтов.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
bulk_create вставляет объекты пакетами без вызова обычного save() и модельных сигналов. Заполнение автоматически созданных primary key в объектах зависит от СУБД и режима обработки конфликтов.
Для Django 5.2 при ignore_conflicts=False возврат AutoField поддерживается PostgreSQL, MariaDB и SQLite 3.35+; на других backend pk может остаться незаполненным. ignore_conflicts=True отключает заполнение автоматически полученных ключей. Метод не сохраняет many-to-many связи и не поддерживает дочерние модели multi-table inheritance. Не рассчитывайте на непрерывность последовательности ID: конфликты и параллельные вставки создают пропуски. Подбирайте batch_size и отдельно выполняйте необходимую валидацию и бизнес-действия, обычно спрятанные в save или signals.
Источник: docs.djangoproject.com.