基于多对多关系数量的Django查询

基于多对多关系数量的Django查询,django,django-queryset,Django,Django Queryset,所以我有Film和Person模型,它们有很多对很多的关系,因为每部电影可以包含很多演员,每个演员可以出现在很多电影中 我想知道是否有办法根据一个演员有多少部电影来限制查询 比如说, Person.objects.all() 将返回数据库中的所有人,而 Person.objects.all()[0].film_set.all() 将返回一组包含数据库中第一个人的所有影片 我想知道是否可以说,查询所有Person对象,这些对象的film\u集中至少有10部电影 我知道一种方法是只查询所有Per

所以我有
Film
Person
模型,它们有很多对很多的关系,因为每部电影可以包含很多演员,每个演员可以出现在很多电影中

我想知道是否有办法根据一个演员有多少部电影来限制查询

比如说,

Person.objects.all()
将返回数据库中的所有人,而

Person.objects.all()[0].film_set.all()
将返回一组包含数据库中第一个人的所有影片

我想知道是否可以说,查询所有
Person
对象,这些对象的
film\u集中至少有10部电影

我知道一种方法是只查询所有Person对象,然后使用if
len(film_set.all())>n的if语句循环遍历这些对象并生成一个子列表,但是有没有更好的方法不需要遍历整个数据库呢?

您可以用它来完成这项工作

from django.db.models import Count
people = Person.objects.all().annotate(film_count=Count('film')).filter(film_count__gte=10)