如何在Django中实现没有where子句的左连接

时间:2017-10-29 23:21:23

标签: django django-models django-orm

House.objects.filter(owner__isnull=True)将生成以下SQL:

SELECT "app_House"."id", "app_House"."name" FROM "app_House" 
LEFT OUTER JOIN "app_Owner" ON ("app_House"."id" = "app_Owner"."house_id") 
WHERE "app_Owner"."id" IS NULL

是否有可用的语法强制Django省略 where 子句?

1 个答案:

答案 0 :(得分:0)

如果我理解正确,那么每次需要有关所有者的信息时,您都希望在不进行数据库查询的情况下选择所有房屋。

对于这个案例,django-api有select_related()方法。在您的情况下,您将不得不使用以下查询:

House.objects.all().select_related('owner')