如何计算每个公司的物料数量? - 查询集

How can I count item quantity per company? - queryset

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

如果你想计算每个公司所有项目的数量总和,你可以这样做:

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

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

使用django聚合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')):