Встречается на собеседованиях • сегодня

Зачем нужен select_related

select_related в Django используется для оптимизации запросов к базе данных при работе с ForeignKey, OneToOneField и наследованием моделей. Он выполняет SQL JOIN и загружает связанные объекты одним запросом, избегая проблемы N+1.

Пример:

python
# Без 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) # Данные уже загружены

text

**Когда использовать:**  
- Для связей "один-к-одному" или "многие-к-одному".  
- Когда точно знаете, что будете обращаться к связанным полям.  

**Ограничения:**  
- Не работает с ManyToManyField (для этого есть `prefetch_related`).  
- Может увеличить размер ответа, если связей много.
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы