Встречается на 3% собеседований по Python
Зачем нужен 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
интервью вопросы и ответы