Встречается на собеседованиях • сегодня

Когда QuerySet выполняет запросы к БД

QuerySet в Django ленив — запрос к БД выполняется только при необходимости. Это происходит в следующих случаях:

  1. Итерация по QuerySet (например, в цикле for).
  2. Срезы с указанием шага ([::2]), но не простые срезы ([:5]).
  3. Вызов len(), list(), bool() или проверка в if.
  4. Сериализация (например, при рендеринге шаблона).
  5. Явный вызов exists(), count(), get() или first().

Пример:

python
# Запрос не выполнен
qs = MyModel.objects.filter(active=True)

# Запрос выполнится здесь
for obj in qs:
    print(obj.name)

# И здесь (новый запрос)
active_count = qs.count()

Ленивая загрузка позволяет комбинировать цепочки фильтров без лишних запросов.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы