Урок 23. Доп. практикум 4 (Django): ORM-запросы, сериализаторы и базовые views
⚡ Кратко: Практикум 4 — ORM, сериализаторы и views
21 задача в двух частях: 1–9 — продвинутые ORM-запросы (annotate, aggregate, пагинация, ExtractWeekDay); 10–21 — Django REST Framework: сериализаторы (ModelSerializer), функциональные views с @api_view, CRUD для тегов/задач/проектов.
- Задачи 1–9: фильтрация по месяцу, ExtractWeekDay, Count, Avg, annotate, order_by, Paginator
- Задачи 10–15: djangorestframework — установка, AllProjectsSerializer, AllTasksSerializer, TagsSerializer, первые views
- Задачи 16–21: CRUD для тегов (GET/PUT/POST/DELETE) + детальная инфо о задаче (вложенный сериализатор)
Топ-3 ошибки: 1) Забыть safe=False в JsonResponse при возврате списка. 2) Не передать many=True в сериализатор для QuerySet. 3) ExtractWeekDay считает воскресенье=1, понедельник=2 — не забывайте это.
📖 О чём этот урок
Урок 23 — дополнительный практикум 4 по Django. Он объединяет два пласта: продвинутые ORM-запросы и первое знакомство с Django REST Framework. Вся работа ведётся с системой управления задачами: модели Project, Task, Tag, ProjectFile, User.
Если нужно повторить базу ORM — загляни в Урок 22 (ORM-запросы).
Что закрепляем
- Фильтрация по дате:
__month,__year,timezone.now() - Аннотации:
annotate()сCount,Avg,ExtractWeekDay - Агрегация:
aggregate()vsannotate() - Пагинация:
Paginator,get_page() - DRF:
ModelSerializer,@api_view,JsonResponse,status - Вложенные сериализаторы: поле как экземпляр другого сериализатора
- Полный CRUD через функциональные views: GET/POST/PUT/DELETE
- Регистрация URL-маршрутов:
urls.pyприложения и проекта
📚 Что повторить перед изучением
- ← Урок 22: Django ORM — продвинутые запросы
- Django shell:
python manage.py shell - QuerySet:
filter(),annotate(),aggregate() - Модели:
Project,Task,Tag,User,ProjectFile - Установка пакетов:
pip install djangorestframework
🎯 Что изучать дальше
- → Урок 24: Инлайн-формы в Admin
- DRF: ViewSet, Router, Permissions
- Пагинация в DRF:
PageNumberPagination