Может ли Django ORM присоединиться к чему-то другому, кроме pk? - PullRequest
0 голосов
/ 14 мая 2018

From: StartTable.objects.annotate(name=F('object_type_2__destination_table__name'))

Django пишет запрос, содержащий это автоматически:

LEFT OUTER JOIN "object" T4 ON ("start_table"."object_type_2_id" = T4."id") 
LEFT OUTER JOIN "destination_table" ON (T4."id" = "destination_table"."object_id") 

Есть ли способ сделать Django более эффективным, написав это вместо этого?:

JOIN destination_table ON destination_table.object_id = start_table.object_type_2_id

Некоторый контекст, о котором следует помнить;start_table имеет несколько полей внешнего ключа, которые все ссылаются на одну и ту же таблицу object, но по разным причинам, поэтому я дал object_type_2_id в качестве имени столбца.

...