django内联类价格的总和

时间:2016-11-04 05:55:58

标签: django aggregate

以下是相关的App和Classes。尝试获取属于发票的所有组件的金额总和,并将其保存在" sub_total'发票领域。发票sub_total =发票实例的所有组件的金额总和。会有什么方法?提前谢谢。

from stock.models import Part


class Invoice(models.Model): 
    invoice_number = models.CharField(max_length=250)
    sub_total = models.DecimalField(max_digits=8, decimal_places=2)


class Component(models.Model):         
    invoice = models.ForeignKey('Invoice',)
    stock = models.ForeignKey('stock.Part',)
    qty =  models.SmallPositiveIntegerField()
    unit_price = models.DecimalField(max_digits=8, decimal_places=2) 
    amount = models.DecimalField(max_digits=8, decimal_places=2)

1 个答案:

答案 0 :(得分:0)

经过几个小时的尝试后,我终于得到了线索,现在情况正常。我不想在视图或模板中复杂的东西。

以下链接有一个很好的例子,并从下面学习,进一步的测试似乎工作正常。

https://github.com/mwolff44/django-simple-invoice/blob/master/invoice/models.py 在第194行附近,显示了类似下面的内容,告诉我们该做什么的线索。

以下类似于我的" Invoice"类 ....

def total(self):
    total = Decimal('0.00')
    for item in self.items.all():
        total = total + item.total()
    return total

然后在Item(Component,在我的例子中)Class中。在第281行附近,显示如下所示的内容。虽然这已经得到了更早的处理,但是其他人可能会觉得这很有用。 ...

def total(self):
    total = Decimal(str(self.unit_price * self.quantity))
    return total.quantize(Decimal('0.01')) 

再次,非常感谢Mathias WOLFF,https://github.com/mwolff44