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

Какой SQL запрос эмулирует select_related() в Django

Django's select_related() оптимизирует запросы, выполняя JOIN для связанных моделей. Эквивалентный SQL-запрос будет использовать явные JOIN:

sql
SELECT 
    main_table.*, 
    related_table.*
FROM 
    main_table
LEFT JOIN 
    related_table ON main_table.foreign_key_id = related_table.id

Пример для моделей BookForeignKey на Author):

python
# Django
Book.objects.select_related('author').all()

# Эквивалентный SQL
SELECT "app_book".*, "app_author".*
FROM "app_book"
LEFT JOIN "app_author" ON ("app_book"."author_id" = "app_author"."id")

LEFT JOIN гарантирует выборку всех записей основной таблицы, даже если связанная запись отсутствует. Для OneToOne используется аналогичный синтаксис.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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