我试图按类别获得总销售额。
我知道有一种方法可以用python做到这一点,但我宁愿用查询或聚合来做。
我的模特:
class Item(models.Model):
category= models.ForeignKey(Category)
name = models.CharField(max_length=40)
class Category(models.Model):
name = models.CharField(max_length=40)
class Store(models.Model):
name=models.CharField(max_length=40)
class Sale(models.Model):
item=models.ForeignKey(Item)
store=models.ForeignKey(Store)
quantity=models.IntegerField()
class Store_Item(models.Model):
item=models.ForeignKey(Item)
store=models.ForeignKey(Store)
price= models.DecimalField(max_digits=10, decimal_places=2)
结果应该是这样的:
sales total
books 100 859.10
audio 200 1894.20
total 300 2753.3
现在我得到的每个类别的总数量如下:
p=Sale.objects.all().values('item__category__name').order_by('item__category__name').annotate(total=Sum('quantity'))
我明白了:
books 100
audio 200
但我被困在价格部分。
非常感谢任何帮助。 提前谢谢!
答案 0 :(得分:0)
您可能希望向模型添加功能。这样的事情应该有效。
class Sale(models.Model):
item=models.ForeignKey(Item)
store=models.ForeignKey(Store)
quantity=models.IntegerField()
def _getTotal(self):
self.sale.extra(select=("total": "quantity * item_price")
).aggregate(total=Sum("total"))["total"]