我正在制作一个简单的应用程序,计算应用程序。 用户选择选项,然后根据该选项应用程序计算所需的东西。
问题是我无法在将数字保存到数据库之前对其进行编辑。
我该怎么做? 谢谢。
我尝试在models.py中进行计算,但是我需要 当我从views.py调用'def compute()'时,它会返回错误(NoneType)。
Models.py
MB
Views.py
class Video(models.Model):
sirina = models.IntegerField(null=True)
visina = models.IntegerField(null=True)
roletne = models.IntegerField(null=True)
okapnice = models.IntegerField(null=True)
materijal = models.IntegerField(null=True)
komore = models.IntegerField(null=True)
krila = models.IntegerField(null=True)
ks = models.IntegerField(default=True)
kv = models.IntegerField(editable=False, null=True)
ros = models.IntegerField(editable=False,blank=True, null=True)
rov = models.IntegerField(editable=False,blank=True, null=True)
proba = models.CharField(max_length=15,default='2')
briner = models.CharField(max_length=15,default='2'
def calculate(self):
return self.sirina + self.visina
total = property(calculate)
def save(self,*args,**kwargs):
self.ks = self.calculate()
super(Video,self).save(*args, **kwargs)
答案 0 :(得分:0)
您将sirina
和visina
定义为可以是None
的值:
sirina = models.IntegerField(null=True)
visina = models.IntegerField(null=True)
因此,每当访问这些属性时,都必须注意如何使用它们。因为当您通过执行Video
初始化没有这些值的a = Video()
时,它们将是None
。
self.visina + self.sirina
将引发NoneType
错误,因为您不能在+
值上使用None
。
答案 1 :(得分:0)
您应该尝试使用a.save()
而不是form.save()
。您将所有数据都保存在表格中。创建Video
的新实例并再次保存回它是没有意义的。另外,您应该避免在这些字段中接受空值,或者在calculate
方法中处理空条件。