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 查询与 case.filter(complaint__isnull=False)不同,但意义相同。

于 2017-07-13T10:04:32.073 回答