计算Django中表中两个字段之间的差异

时间:2015-07-14 10:15:00

标签: python django

我有一个模型,存储加油站的期初和期末余额。我还有一个额外的第三列,它基本上是开头和读数值之间的差异。

class DailySales(models.Model):
    PUMP_NAMES = (
    ...
    )
    Pump_name = models.CharField(max_length = 5, choices = PUMP_NAMES)
    Opening_reading = models.IntegerField()
    Closing_reading = models.IntegerField()
    Gross_sales = models.IntegerField(null = True)
    Date = models.DateField(auto_now_add= True)

    def Calc_gross(self):
        self.Gross_sales = self.Opening_reading - self.Closing_reading
        super(DailySales,self).save()

当我一次只保存一个实例时,Calc_gross方法可以正常工作。 但是我想立即为模型添加多个开始和结束值,我使用了表单集。

SalesForm = modelformset_factory(DailySales, extra = 7, exclude=('Date','Gross_sales'))

这是逻辑蹒跚的地方。 Django无法计算每一行的总值。

Exception Value:    

'list' object has no attribute 'Calc_gross'

我正在思考,因为它是一个列表,我可以迭代每个并调用Calc_gross方法。这个名单的名称是什么?

有更好的方法吗?使用前缀是否合乎逻辑(如何为每个表单分配前缀?)

1 个答案:

答案 0 :(得分:0)

原来我可以循环使用formset。

如果request.method =='POST':         sale_Form = SalesForm(data = request.POST)

    for Form in sale_Form:

        if Form.is_valid():

            gross = Form.save()


            gross.Calc_gross()
            gross.save()
        else:
            print(sale_Form.errors)