Встречается на собеседованиях • сегодня
Что такое prefetch_related
prefetch_related — это метод в Django ORM для оптимизации запросов к БД при работе с отношениями "многие ко многим" (ManyToMany) и "один ко многим" (ForeignKey). В отличие от select_related, который использует JOIN для загрузки связанных объектов за один запрос, prefetch_related делает отдельные запросы для каждой связи, но минимизирует их количество.
Пример:
python
from django.db import models
class Author(models.Model):
name = models.CharField(max_length=100)
class Book(models.Model):
title = models.CharField(max_length=100)
author = models.ForeignKey(Author, on_delete=models.CASCADE)
# Без prefetch_related — N+1 проблема
authors = Author.objects.all()
for author in authors:
print(author.book_set.all()) # Отдельный запрос для каждого автора
# С prefetch_related — всего 2 запроса
authors = Author.objects.prefetch_related('book_set')
for author in authors:
print(author.book_set.all()) # Данные уже загруженыКлючевые моменты:
- Работает для
ManyToManyFieldи обратных связейForeignKey. - Использует два запроса: первый — для основной модели, второй — для связанных объектов.
- Эффективен при большом количестве объектов.

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