0

各映画には多くの俳優/女優が含まれる可能性があり、各俳優/女優は多くの映画に出演する可能性があるため、私は多対多の関係を持つモデルを持っていますFilmPerson

俳優が持っている映画の数に基づいてクエリを制限する方法があるかどうか疑問に思っています。

例えば、

Person.objects.all()

データベース内の全員を返しますが、

Person.objects.all()[0].film_set.all()

データベース内の最初の人物を含むすべての映画のセットを返します。

Person少なくとも 10 個のフィルムがfilm_set.

1 つの方法は、すべての Person オブジェクトにクエリを実行し、if ステートメントをlen(film_set.all()) > n使用してそれらをループし、そこからサブリストを作成することですが、データベース全体を反復処理しないより良い方法はありますか?

4

1 に答える 1

1

これは、集計で行うことができます。

from django.db.models import Count
people = Person.objects.all().annotate(film_count=Count('film')).filter(film_count__gte=10)
于 2013-10-16T13:01:02.090 に答える