Встречается на собеседованиях • сегодня
Использовал prefetch_related как класс или метод
prefetch_related в Django — это метод QuerySet, а не класс. Он используется для оптимизации запросов при работе с обратными связями (ForeignKey, ManyToMany) или связанными объектами, уменьшая количество SQL-запросов.
Пример:
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, related_name='books')
Без prefetch_related — N+1 проблема
authors = Author.objects.all()
for author in authors:
print(author.books.all()) # Отдельный запрос для каждого автора
С prefetch_related — 2 запроса
authors = Author.objects.prefetch_related('books')
for author in authors:
print(author.books.all()) # Данные уже загружены
text
Ключевое отличие от `select_related`: `prefetch_related` делает отдельный запрос для связанных данных и объединяет их в Python, а не JOIN в SQL. Подходит для ManyToMany и обратных ForeignKey.
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы