Зачем нужен select_related

Python Junior Без компании
Зачем нужен select_related
Ответы
`select_related` в Django используется для оптимизации запросов к базе данных при работе с ForeignKey, OneToOneField и наследованием моделей. Он выполняет SQL JOIN и загружает связанные объекты одним запросом, избегая проблемы N+1. **Пример:** ``` # Без select_related (N+1 запросов) books = Book.objects.all() for book in books: print(book.author.name) # Отдельный запрос для каждого автора # С select_related (1 запрос) books = Book.objects.select_related('author').all() for book in books: print(book.author.name) # Данные уже загружены ``` **Когда использовать:** - Для связей "один-к-одному" или "многие-к-одному". - Когда точно знаете, что будете обращаться к связанным полям. **Ограничения:** - Не работает с ManyToManyField (для этого есть `prefetch_related`). - Может увеличить размер ответа, если связей много.