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

📁 Блок: Django ⏱️ Время изучения: ~60 мин 🎯 Сложность: Средняя
#from #import #all #filter #get #count #exists #values #order_by #q #update #print #for #in #charfield #decimalfield #class #if #try #except #and #or #not #def #return #list #select_related #prefetch_related #annotate #aggregate #add #insert #len #write #any #textfield #foreignkey #exec #open #read

⚡ Кратко: QuerySet API в Django 6.0

Менеджер 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 (~) и вложенные условия

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

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