Встречается на 3% собеседований по Python
Что такое 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
интервью вопросы и ответы