Использовал prefetch_related как класс или метод
Python
Junior
Без компании
Использовал prefetch_related как класс или метод
Ответы
`prefetch_related` в Django — это метод QuerySet, а не класс. Он используется для оптимизации запросов при работе с обратными связями (ForeignKey, ManyToMany) или связанными объектами, уменьшая количество SQL-запросов.
Пример:
```
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()) # Данные уже загружены
```
Ключевое отличие от `select_related`: `prefetch_related` делает отдельный запрос для связанных данных и объединяет их в Python, а не JOIN в SQL. Подходит для ManyToMany и обратных ForeignKey.