Что такое QuerySet
QuerySet — это набор объектов модели и одновременно описание SQL-запроса к базе данных. Например, Article.objects.all() возвращает QuerySet со всеми статьями, но не список Python-объектов сразу.
articles = Article.objects.filter(is_published=True)
Что означает ленивая загрузка
Django не выполняет запрос к базе в момент создания QuerySet. Он откладывает запрос, пока данные не понадобятся: например, при обходе QuerySet в цикле, преобразовании в список, вызове len(), проверке в условии или выводе элементов.
articles = Article.objects.filter(is_published=True)
for article in articles:
print(article.title)
Зачем это нужно
Ленивая загрузка позволяет строить запрос по частям и не обращаться к базе раньше времени. Например, можно сначала создать QuerySet, затем добавить фильтрацию и сортировку, а SQL выполнится только при получении результата.
Как ответить на собеседовании
QuerySet — это объект Django ORM, который представляет набор записей и будущий запрос к базе. Он ленивый: SQL обычно выполняется только тогда, когда я начинаю использовать данные, например итерируюсь по QuerySet.