Урок 26. ORM запросы ч.2 + Основы Django REST Framework

📁 Блок: DRF ⏱️ Время изучения: ~75 мин 🎯 Сложность: Средняя
#django #orm #aggregate #annotate #subquery #drf #serializer #api

⚡ Кратко: продвинутые ORM + введение в DRF

Урок делится на две части: продвинутые ORM-запросы (агрегация, подзапросы, ExpressionWrapper) и первое знакомство с Django REST Framework — установка, сериализаторы, зачем нужен DRF.

  • aggregate(): возвращает словарь — Book.objects.aggregate(total=Count('id'), avg=Avg('price'))
  • annotate(): добавляет вычисленное поле к каждому объекту QuerySet
  • order_by() / срезы: сортировка и QuerySet[start:stop] — аналог LIMIT/OFFSET
  • Subquery + OuterRef: встроенный подзапрос со ссылкой на внешний запрос
  • ExpressionWrapper: обёртка для сложных арифметических выражений с явным output_field
  • DRF: pip install djangorestframework, добавить 'rest_framework' в INSTALLED_APPS

Что запомнить: aggregate() — одно значение для всего QuerySet; annotate() — вычисленное поле для каждого объекта.

Топ-3 ошибки: 1) Путать aggregate и annotate. 2) Забыть output_field в ExpressionWrapper. 3) Не добавить 'rest_framework' в INSTALLED_APPS.

📖 О чём этот урок

Урок 26 открывает блок DRF и состоит из двух логических частей. В первой части разбираются продвинутые возможности Django ORM: агрегация и аннотация данных, сортировка, ограничение выборки срезами, подзапросы с Subquery/OuterRef, обёртка сложных выражений через ExpressionWrapper и фильтрация по временным меткам. Во второй части вводится Django REST Framework — что это такое, почему его используют и как подключить к проекту.

Что изучим

  • Агрегационные функции: Count, Sum, Avg, Min, Max
  • Методы aggregate() и annotate() — разница и применение
  • Метод order_by() — сортировка по одному и нескольким полям, по связанным таблицам
  • Срезы QuerySet — аналог LIMIT/OFFSET в SQL
  • Подзапросы: классы Subquery и OuterRef
  • ExpressionWrapper — обёртка арифметических выражений с явным типом результата
  • Фильтрация по временным меткам с timezone
  • Что такое Django REST Framework и зачем он нужен
  • Установка DRF и подключение к Django-проекту
  • Сериализация и десериализация данных в DRF

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

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

  • → Урок 27: Практикум 6 — DRF на практике
  • ModelSerializer и Serializer — различия и когда что использовать
  • APIView и @api_view — базовые классы представлений
  • Response и status — правильные HTTP-ответы
  • Router и ViewSet — автоматическая маршрутизация