Встречается на собеседованиях • сегодня
В чем разница между select_related и prefetch_related в Django
Оба метода используются для оптимизации запросов к БД в Django ORM, но работают по-разному:
select_related создает SQL JOIN и загружает связанные объекты за один запрос. Подходит для ForeignKey и OneToOne полей. Эффективен для "один-ко-многим" связей.
python
# Один запрос с JOIN
books = Book.objects.select_related('author').all()
for book in books:
print(book.author.name) # Не вызывает дополнительных запросовprefetch_related делает отдельный запрос для каждой связи и затем "соединяет" результаты в Python. Оптимален для ManyToMany и reverse ForeignKey отношений.
python
# Два запроса: для книг и для авторов
books = Book.objects.prefetch_related('authors').all()
for book in books:
for author in book.authors.all(): # Не вызывает дополнительных запросов
print(author.name)Ключевые различия:
select_related- JOIN в SQL,prefetch_related- отдельные запросыselect_relatedдля простых связей,prefetch_relatedдля множественныхselect_relatedограничен возможностями JOIN в БД

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