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

Как работает lazy loading в Django

Lazy loading в Django — это механизм отложенной загрузки данных, который позволяет избежать лишних запросов к БД до момента реального использования объекта.

Основные примеры:

  1. Lazy QuerySet — запрос не выполняется до итерации, среза или явного вызова list()/exists():
python
users = User.objects.all()  # Запрос не выполнен
print(users[0])  # Только сейчас Django делает SQL-запрос
  1. Отношения (ForeignKey, OneToOne, ManyToMany) — загружаются только при обращении:
python
user = User.objects.get(id=1)  # Запрос только для User
print(user.profile.bio)  # Дополнительный запрос для Profile

Как избежать N+1 проблемы:
Используйте select_related (для ForeignKey/OneToOne) и prefetch_related (для ManyToMany):

python
User.objects.select_related('profile').get(id=1)  # Загрузит User и Profile одним запросом

Важно: Lazy loading экономит ресурсы, но требует аккуратного обращения, чтобы не генерировать лишние запросы.

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

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

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

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