📝 Django

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

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

Охватываемые темы: 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)

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

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

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

🔗 Похожие

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

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

📝

pytest-django: тестирование Django

Охватываемые темы: Установка, @pytest.mark.djangodb, Фикстуры, Тестирование views.

📅 30.06.2026 👁️ 138
📝

Django: Теги шаблонов

Теги шаблонов — это логика внутри HTML. В отличие от {{ переменная }}, которая только...

📅 30.06.2026 👁️ 87
📝

Django: Статические файлы

Статические файлы — CSS, JavaScript, изображения, шрифты. Django обрабатывает их особым образом: в разработке раздаёт...

📅 30.06.2026 👁️ 79

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

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