【问题标题】:Django error: unsupported operand type(s) for *: 'NoneType' and 'float'Django 错误:* 不支持的操作数类型:“NoneType”和“float”
【发布时间】:2016-08-23 08:56:17
【问题描述】:


我的代码有问题。我一直在寻找必须解决它,但我没有发现类似的问题。我想对一些字段值进行多个然后求和,但我从标题中得到错误。必须解决这个问题吗?我想这是数据类型的问题,但我不知道如何定义方程。请帮帮我。

class Bill(models.Model):
   date = models.DateField(default=datetime.now())
   tax = models.FloatField(default=0.20)
   priceNoTax = models.IntegerField()#integer that I get from other class
   priceTax = models.FloatField()
   idAccount = models.ForeignKey(Account, on_delete=models.CASCADE, verbose_name="Account")

   def save(self, *args, **kwargs):
       if self.priceTax is None:
           self.priceTax = self.priceNoTax+(self.priceNoTax*self.tax)#here is an error
       super(Bill, self).save(*args, **kwargs)

   def __str__(self):
        return self.date

非常感谢!

【问题讨论】:

  • 您已经检查了priceTax 是否为无,但您尚未检查priceNoTax 是否为无,显然是。

标签: python django


【解决方案1】:

错误信息中参数的顺序对应代码:

'NoneType' and 'float' self.priceNoTax*self.tax

self.priceNoTax 尚未初始化,或者如果您从数据库加载它,则它包含NULL。您可以在乘法发生之前用self.priceNoTax 的内容的print 来验证这一点。

仔细检查self.priceNoTax 的设置方式。

【讨论】:

    猜你喜欢
    • 2022-08-22
    • 1970-01-01
    • 2017-06-06
    • 2014-03-28
    • 2018-06-20
    • 1970-01-01
    • 1970-01-01
    • 2019-08-22
    相关资源
    最近更新 更多