我有一个模型,存储加油站的期初和期末余额。我还有一个额外的第三列,它基本上是开头和读数值之间的差异。
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方法。这个名单的名称是什么?
有更好的方法吗?使用前缀是否合乎逻辑(如何为每个表单分配前缀?)
答案 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)