📝 Django

Bulk-операции в Django ORM

P
Автор
PyLand Team
📅
Опубликовано
30.06.2026
⏱️
Время чтения
1 мин
👁️
Просмотров
289
🌳
Уровень
Продвинутый

Охватываемые темы: bulk_create — массовое создание, bulk_update — массовое обновление, update() — обновление через queryset, delete() — удаление через queryset.

bulk_create — массовое создание

tasks = [
    Task(title='Задача 1', status='todo'),
    Task(title='Задача 2', status='todo'),
    Task(title='Задача 3', status='in_progress'),
]
Task.objects.bulk_create(tasks)
# Один SQL INSERT вместо трёх

bulk_update — массовое обновление

tasks = Task.objects.filter(status='todo')
for task in tasks:
    task.priority = 5

Task.objects.bulk_update(tasks, ['priority'])
# Один SQL UPDATE вместо N

update() — обновление через queryset

# Обновить статус всех просроченных задач
Task.objects.filter(due_date__lt=today, status='todo').update(status='overdue')

delete() — удаление через queryset

# Удалить все завершённые задачи старше 30 дней
Task.objects.filter(status='done', updated_at__lt=threshold).delete()

Сравнение производительности

Способ 1000 объектов SQL-запросы
Цикл save() медленно 1000
bulk_create() быстро 1
update() очень быстро 1

Ограничения bulk_create

  • Не вызывает save() и сигналы
  • Не обновляет auto_now поля по умолчанию
  • Для PostgreSQL поддерживает update_conflicts=True
Task.objects.bulk_create(
    tasks,
    update_conflicts=True,
    unique_fields=['title'],
    update_fields=['status', 'priority'],
)

Ваша реакция на статью

💬 Комментарии (0)

🔐 Войдите в систему, чтобы оставить комментарий
🚪 Войти
💭

Комментариев пока нет

Станьте первым, кто поделится мнением об этой статье!

🔗 Похожие

Похожие статьи

Продолжите изучение с этими материалами

📝

Поиск в Django

Поиск в Django можно начать с простых ORM-фильтров, а для ранжирования и полнотекстового поиска использовать...

📅 30.06.2026 👁️ 279
📝

Swagger документация с drf-spectacular

drf-spectacular генерирует OpenAPI 3.0 схему и Swagger UI для DRF.

📅 30.06.2026 👁️ 561
📝

settings.py: настройки Django

settings.py — центральный конфигурационный файл Django-проекта.

📅 30.06.2026 👁️ 315

Понравилась статья?

Подпишитесь на наши обновления и получайте новые статьи первыми. Развивайтесь вместе с PyLand!