在reverse_set长度上过滤模型

Hed*_*ide 3 django django-models django-orm

考虑这些伪类:

class Foo(models.Model):
    pass

class Bar(models.Model):
    foo = models.ForeignKey(Foo)
Run Code Online (Sandbox Code Playgroud)

我想通过Foo的管理器有效地过滤一个QuerySet,它只保存Foo对象,并且至少有2个Bar对象指向它.

Chr*_*att 8

使用聚集Count:

from django.db.models import Count

Foo.objects.annotate(bar_count=Count('bar')).filter(bar_count__gte=2)
Run Code Online (Sandbox Code Playgroud)