44

これは重複する質問になるはずですが、他に何も見つかりません。不満のある写真のリストを取得しようとしています。苦情を受け取って関連する写真を処理することはできません。写真のクエリセットが必要です。

これは機能するはずですが、正しくないようです。

Photo.objects.filter(complaint__id__gte=0)

これは最も効率的な方法ではないようです。

Photo.objects.annotate(Count('complaint')).exclude(complaint__count=0)

もっと良い方法はありますか?

4

2 に答える 2

83

どうですか...

Photo.objects.filter(complaint__isnull=False)

https://docs.djangoproject.com/en/dev/topics/db/queries/から

于 2012-12-11T21:57:11.490 に答える
20

どのバリアントが最適かはわかりませんが、それでも機能します。

Photo.objects.exclude(complaint=None)

ここで生成されるSQLクエリは、の場合と同じではありません.filter(complaint__isnull=False)が、意味は同じです。

于 2017-07-13T10:04:32.073 に答える