计算另一个表中每个对象的使用次数

时间:2018-12-17 11:09:52

标签: python django django-orm

我有两个模型:

class FirstTable(models.Model):
    name = models.CharField(...)


class SecondTable(models.Model):
    examples = models.ManyToManyField(FirstTable)

我有一个函数可以计算SecondTable的示例字段中使用FirstTable的次数:

data = {}
for i in FirstTable.objects.all():
    data[i.name] = SecondTable.objects.filter(examples__exact=i).count()

但是可以通过一个请求获得相同的数据吗? (汇总或注释方式)

1 个答案:

答案 0 :(得分:1)

您可以这样做:

from django.db.models import Count

FirstTable.objects.annotate(examples_count=Count('secondtable')).values('name', 'examples_count')

输出将是:

<QuerySet [{'name': 'Name1', 'examples_count': 3}, {'name': 'Name2', 'examples_count': 10}, ..., >