这是我的架构:
城市 --> 摄影师
我正在尝试获取至少有一名摄影师的城市列表,并返回城市的摄影师人数。
这是我正在使用的查询集:
City.objects.annotate(photographer_count=aggregates.Count('photographers')).filter(photographer_count__gt=0).order_by('-photographer_count')
这也完全符合我的预期,除了出于某种原因 Django 选择使用左外连接在城市/摄影师之间进行连接。如果我抓取 SQL 文本并简单地将“左外”更改为“内”,则查询从约 11 秒变为 200 毫秒,结果相同。
我尝试在注释前面放置一个过滤器,以向 Django 提示它应该是内部连接,但这没有用。
我可以对此执行任何 Django 查询伏都教以获得内部连接?我意识到我可以直接使用 SQL,但更愿意通过 ORM。