Использовал ли prefetch_related

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