Урок 21. Доп. практикум 3 (Django): ORM-запросы
⚡ Кратко: Практикум 3 — Django ORM-запросы
26 задач на работу с Django ORM через Django shell: создание объектов, фильтрация, Q/F-классы, bulk_update, annotate. Система управления задачами (Task, Project, Tag, User, ProjectFile).
- Задачи 1–6: создание данных — тэги, проекты, файлы, пользователи, задачи, M2M-связи
- Задачи 7–12: базовые запросы — all(), filter(), exists(), icontains, дата, Q-класс
- Задачи 13–20: продвинутые запросы — статус+приоритет, update(), exclude(), F-класс, isnull
- Задачи 21–26: массовые операции — bulk_update, annotate(Count), комбинированная фильтрация
Топ-3 ошибки: 1) Путать .update() на QuerySet и .save() на объекте. 2) Не импортировать Q/F перед использованием. 3) Потерять объекты из прошлых задач — создавать заново в shell.
📖 О чём этот урок
Урок 21 — дополнительный практикум по Django ORM. Цель — закрепить навыки работы с QuerySet API через 26 последовательных задач в Django shell. Вся работа ведётся с системой управления задачами: модели Tag, Project, ProjectFile, User, Task.
Если что-то кажется незнакомым — загляни в Урок 20 (Практикум 5) или Урок 16 (модели).
Что закрепляем
- Работа в Django shell:
python manage.py shell - Создание объектов:
.save(),objects.create(),objects.bulk_create() - ManyToMany: метод
.add()на related manager - QuerySet API:
all(),filter(),exclude(),first(),last(),count(),exists() - Lookups:
__icontains,__gt,__gte,__lte,__isnull,__month,__in - Q-класс: логические операторы
&,|,~ - F-класс: обновление через значение поля
- Массовые операции:
bulk_update(),.update()на QuerySet - Агрегация:
annotate(Count(...))
📚 Что повторить перед изучением
- ← Урок 20: Практикум 5 — Модели и Admin-панель
- ← Урок 16: Модели Django (углублённо)
- Django shell:
python manage.py shell - QuerySet:
filter(),all(),create(),save() - Связи моделей: ForeignKey, ManyToManyField
🎯 Что изучать дальше
- → Урок 22: Django ORM — продвинутые запросы
- Агрегация:
aggregate(),annotate() - select_related и prefetch_related для оптимизации запросов