Урок 23. Доп. практикум 4 (Django): ORM-запросы, сериализаторы и базовые views

📁 Блок: Django ⏱️ Время изучения: ~120 мин 🎯 Сложность: Средняя
#django #ORM #annotate #aggregate #paginator #serializers #djangorestframework #api_view #практикум

⚡ Кратко: Практикум 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() vs annotate()
  • Пагинация: Paginator, get_page()
  • DRF: ModelSerializer, @api_view, JsonResponse, status
  • Вложенные сериализаторы: поле как экземпляр другого сериализатора
  • Полный CRUD через функциональные views: GET/POST/PUT/DELETE
  • Регистрация URL-маршрутов: urls.py приложения и проекта

📚 Что повторить перед изучением

🎯 Что изучать дальше