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
答案 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')):