Встречается на собеседованиях • сегодня
Использовал ли prefetch_related
prefetch_related — это метод в Django ORM для оптимизации запросов к БД при работе с связанными объектами (ManyToMany, ForeignKey в обратную сторону). В отличие от select_related, который делает JOIN и загружает данные одним запросом, prefetch_related выполняет отдельные запросы для каждой связи, но минимизирует их количество.
Пример:
python
# Без prefetch_related — N+1 проблема
books = Book.objects.all()
for book in books:
print(book.authors.all()) # Отдельный запрос для каждой книги
# С prefetch_related — 2 запроса
books = Book.objects.prefetch_related('authors')
for book in books:
print(book.authors.all()) # Данные уже загруженыКогда использовать:
- Для
ManyToManyи обратныхForeignKey. - Когда
select_relatedне подходит (нет прямого JOIN). - Для уменьшения количества запросов при итерации по связанным объектам.
Нюансы:
- Не работает с
filter()после префетча. - Можно кастомизировать через
Prefetch()(например, добавитьselect_relatedвнутри префетча).

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