Встречается на собеседованиях • сегодня
Что такое prefetch_related() в Django
prefetch_related() — это метод QuerySet в Django, который оптимизирует загрузку связанных объектов для отношений "многие ко многим" (ManyToMany) и "один ко многим" (ForeignKey в обратную сторону). В отличие от select_related(), который использует JOIN, prefetch_related() делает отдельный запрос для каждой связи и затем "сшивает" результаты в Python.
Пример:
python
# Без prefetch_related — N+1 проблема
authors = Author.objects.all()
for author in authors:
books = author.books.all() # Отдельный запрос для каждого автора
# С prefetch_related — всего 2 запроса
authors = Author.objects.prefetch_related('books')
for author in authors:
books = author.books.all() # Данные уже в кэшеКлючевые моменты:
- Работает для ManyToMany и reverse ForeignKey
- Выполняет дополнительные запросы, но минимизирует их количество
- Можно каскадировать:
prefetch_related('books__publisher') - Позволяет делать сложные префетчи через
Prefetch()объекты

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы