所以我有两个模型,Person
它们Film
处于多对多关系中。我的目标是抢一部电影,并输出至少出现在 10 部电影中的人。
例如,我可以通过以下方式单独获取计数:
>>> Person.objects.get(short__istartswith = "Matt Damon").film_set.count()
71
但是,如果我尝试过滤掉特定电影的所有演员:
>>> Film.objects.get(name__istartswith="Saving Private Ryan").actors.all().annotate(film_count=Count('film')).filter(film_count__gte=10)
[]
它返回一个空集,因为如果我手动查看每个人film_count
,它是 1,即使像马特达蒙这样的演员(如上所示)已经在我的数据库中的 71 部电影中。
正如您在此查询中看到的那样,注释不起作用:
>>> Film.objects.get(name__istartswith="Saving Private Ryan").actors.all().annotate(film_count=Count('film'))[0].film_count
1
>>> Film.objects.get(name__istartswith="Saving Private Ryan").actors.all().annotate(film_count=Count('film'))[0].film_set.count()
7
我似乎无法找到一种方法来过滤它film_set.count()