Карточка Junior Django ORM и N+1 спрашивают часто обновлено
Когда выполняется QuerySet
Вопрос
Какие операции заставляют QuerySet выполнить SQL?
Попробуйте сами
Ответьте про себя или вслух, потом откройте ответ и сверьтесь.
Показать ответ и разбор
Коротко
Итерация, list(), len(), bool()/if qs, repr (в консоли), срез с шагом, индекс qs[0], а также методы get, first, count, exists, aggregate, которые сразу делают свой запрос.
Ответ
Итерация, list(), len(), bool()/if qs, repr (в консоли), срез с шагом, индекс qs[0], а также методы get, first, count, exists, aggregate, которые сразу делают свой запрос.
Разбор
Фильтры, order_by, annotate, select_related только строят запрос. Результат выполнения кешируется в объекте QuerySet.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Ещё по теме «Django ORM и N+1»
- Задвоение сумм при нескольких annotate
- Посчитать SQL-запросы при ленивой загрузке
- Как prefetch_related склеивает данные
- exists() и count() вместо загрузки строк
- Атомарное увеличение счётчика
- Prefetch с вложенным select_related
- Обработка миллиона строк
- Когда QuerySet выполняет SQL