0

我正在尝试按类别获得总销售额。

我知道有一种方法可以用 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

但我被困在价格部分。

任何帮助将不胜感激。提前致谢!

4

1 回答 1

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"]
于 2012-07-05T05:29:43.907 回答