Django计算模型总字段

时间:2020-09-23 14:49:25

标签: django django-models

我想返回利率,但在管理员 +不支持的操作数类型中出现此错误:'NoneType'和'NoneType'

class SomeModel(models.Model): 
      code_style_rate = models.DecimalField(max_digits=4, decimal_places=2)
      decision_rate = models.DecimalField(max_digits=4, decimal_places=2)
      severity_rate = models.DecimalField(max_digits=4, decimal_places=2)

      @property
      def rate(self):
         return (self.code_style_rate + self.decision_rate + self.severity_rate) / 3


      def __str__(self):
         return self.rate

2 个答案:

答案 0 :(得分:1)

首先,您可以检查对象是否为None,然后执行计算。

@property
def rate(self):
   if self.code_style_rate is not None and self.decision_rate is not None and self.severity_rate is not None:
       return (self.code_style_rate + self.decision_rate + self.severity_rate) / 3

答案 1 :(得分:1)

我认为,这将是更pythonic的

class SomeModel(models.Model):
    # other fields and methods
    @property
    def rate(self):
        total = (self.code_style_rate or 0) + (self.decision_rate or 0) + (self.severity_rate or 0)
        return total / 3