Урок 22. ORM запросы (Django)

📁 Блок: Django ⏱️ Время изучения: ~60 мин 🎯 Сложность: Средняя
#django #orm #queryset #filter #lookups #Q-объекты #crud

⚡ Кратко: 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 (~) и вложенные условия

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

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