我如何计算每家公司的项目数量? - queryset

时间:2015-01-13 07:27:28

标签: django

class Item(models.Model):
    company = models.ForeignKey(Company)
    name = models.CharField(max_length=255)
    quantity = models.IntegerField()

我如何计算每家公司的数量?

quantity = 0
for item in queryset:
   quantity += item.quantity

print quantity

2 个答案:

答案 0 :(得分:1)

如果您想计算每家公司所有商品的数量总和,您可以这样做:

Company.objects.annotate(quantity_sum=Sum('item_set__quantity'))

结果是一个查询集,其中每个对象(公司实例)都有一个属性'quantity_sum',表示您想要的信息。

答案 1 :(得分:1)

使用django aggregation on backward relationship

for company in Company.objects.annotate(total_qty=Sum('item__quantity')):
    print company, company.total_qty

请注意,您可以像往常一样使用Company模型上的任何过滤器。例如:

us_companies = Company.objects.filter(contry='US') \
                              .annotate(total_qty=Sum('item__quantity')):