ここに私のスキーマがあります:
都市 --> カメラマン
少なくとも 1 人の写真家がいる都市のリストを取得し、その都市の写真家の数を返そうとしています。
ここに私が取り組んでいるクエリセットがあります:
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 を使用したいと考えています。