Урок 22. ORM запросы (Django)
⚡ Кратко: QuerySet API в Django 5.x
Менеджер objects — единая точка входа для всех запросов к БД. Возвращает QuerySet — ленивый итерируемый набор записей.
- Создание:
Model.objects.create(**kwargs)илиobj.save() - Чтение:
.all(),.filter(),.exclude(),.get() - Методы:
.first(),.last(),.count(),.exists(),.values() - Lookups:
field__exact,field__icontains,field__gt,field__in,field__range - Q-объекты:
Q(a=1) & Q(b=2),Q(a=1) | Q(b=2),~Q(a=1)
Топ-3 ошибки: 1) get() при нескольких результатах — MultipleObjectsReturned. 2) Забыть __ в lookup-синтаксисе. 3) Использовать filter() вместо get() для уникальных записей.
📖 О чём этот урок
В этом уроке изучается QuerySet API Django — основной инструмент для работы с базой данных через ORM. Лекция охватывает менеджер моделей, создание и чтение записей, фильтрацию через lookups и класс Q.
Что изучим
- Менеджер моделей
objects— стандартный интерфейс запросов - Django Shell: запуск, импорт моделей, выполнение ORM-запросов
- Создание записей:
create()иsave() - Чтение записей:
all(),first(),last(),count(),exists(),values() - Метод
get()и его исключения:DoesNotExist,MultipleObjectsReturned - Фильтрация:
filter(),exclude(), Lookup-синтаксис - Все виды Lookups: exact, iexact, contains, icontains, in, gt/gte/lt/lte, isnull, startswith, endswith, range
- Класс
Q: AND (&), OR (|), NOT (~) и вложенные условия
📚 Что повторить перед изучением
- ← Урок 21: Доп. практикум 3 — ORM-запросы на практике
- Модели Django: поля, связи, миграции (уроки 17–18)
- Что такое QuerySet и ленивые вычисления
- Работа в Django Shell (
python manage.py shell)
🎯 Что изучать дальше
- → Урок 23: Доп. практикум 4 — практика ORM-запросов
- Агрегации:
annotate(),aggregate(),Count,Sum,Avg - F-объекты: ссылка на поля модели внутри запросов
- select_related / prefetch_related — оптимизация N+1
- values_list(), order_by(), distinct()