2014-06-17 65 views
0

的下面是我的模型的摘錄:獲得總單價*數量

class Order(models.Model): 
    ... 
    content_type = models.ForeignKey(ContentType) 
    user = models.ForeignKey('auth.User') 


class OrderItem(models.Model): 
    ... 
    unit_price = models.DecimalField(max_digits=7, decimal_places=2, blank=True) 
    quantity = models.SmallIntegerField() 
    order = models.ForeignKey(Order) 

我有一個儀表盤,我想顯示的總銷售的項目。我正在努力如何將unit_price乘以quantity

+0

是你想在這只是一些OrderItem級別?或者你想獲得一個'Order'上所有'OrderItem's的總金額(unit_price *數量)嗎? – pcoronel

+0

@pcoronel處於OrderItem級別,而不是每個訂單。 –

回答

2
  1. 你可以用extra()查詢做到這一點:

    OrderItem.objects.extra(select={'total': 'unit_price * quantity'}) 
    
  2. totalOrderItem你可以添加一個屬性:

    class OrderItem(models.Model): 
        ... 
        unit_price = models.DecimalField(max_digits=7, decimal_places=2, blank=True) 
        quantity = models.SmallIntegerField() 
    
        @property 
        def total(self): 
         return unit_price * quantity 
    
    # you can then access it like any other field (but you cannot filter on it) 
    print OrderItem.objects.get(pk=1).total