Это гипотетически для простоты. В моем приложении Django есть модели для Kit, KitSku и Sku. Модель KitSku связывает Ску с Китом, а также предоставляет количество этого Ску в этом наборе. В шаблоне у меня что-то типа:
<!-- SELECT * FROM kitsku_table WHERE kit_id = <Kit.id> -->
{% for kitsku in kit.kitsku_set.all %}
<!-- SELECT * FROM sku_table WHERE sku = <KitSku.sku> -->
<div>{{ kitsku.sku.name }}</div>
{% endfor %}
Теперь проблема в том, что Django запрашивает все строки KitSku и затем запрашивает каждый sku внутри цикла for в отдельном запросе SQL для каждой итерации.
Могу ли я заставить SQL-запрос, полученный в результате вызова kitsku_set.all (), выполнить JOIN с моделью Sku?
Этот первый запрос должен быть похож на:
SELECT * FROM kitsku_table k LEFT JOIN sku_table s ON (k.sku = s.sku)
WHERE k.kit_id = <Kit.id>