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 に答える