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

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы