Зачем нужен prefetch_related в Django

Python Junior Без компании
Зачем нужен prefetch_related в Django
Ответы
`prefetch_related` в Django оптимизирует загрузку связанных объектов для отношений `ManyToMany` и обратных `ForeignKey`, уменьшая количество SQL-запросов. В отличие от `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()) # Данные уже загружены ``` Используйте `prefetch_related`, когда: - Есть отношения `ManyToMany` или обратные `ForeignKey` - Нужно загрузить несколько уровней связей - Требуется дополнительная фильтрация через `Prefetch()`