telecast_qs = Telecast.objects.all()[:10]

При ForeignKey tv_channel шаблон может породить N+1: один запрос за передачами и отдельный за каналом каждой записи. Загрузите канал через select_related до обхода.

Короткий ответ

Что ответить на собеседовании

При ForeignKey tv_channel шаблон может породить N+1: один запрос за передачами и отдельный за каналом каждой записи. Загрузите канал через select_related до обхода.

Подробный разбор

Ответ с пояснениями

Условие

telecast_qs = Telecast.objects.all()[:10] {% for telecast in telecast_qs %} {{ telecast.title }} by {{ telecast.tv_channel.title }} {% endfor %}

Ответ

При ForeignKey tv_channel шаблон может породить N+1: один запрос за передачами и отдельный за каналом каждой записи. Загрузите канал через select_related до обхода.

telecast_qs = (Telecast.objects
               .select_related('tv_channel')
               .order_by('id')[:10])

Имя связи берётся из условия; order_by задаёт определённые первые десять записей. select_related объединяет подходящую одиночную связь в SQL JOIN. Для многозначной связи нужен другой подход, обычно prefetch_related. QuerySet ленивый, реальное выполнение происходит при потреблении.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее