Django - 十进制和方法的不支持的操作数类型

时间:2018-02-09 13:38:39

标签: python django

我试图在我的Django models.py中添加两个值(一个来自方法,一个来自字段)。

class Object(models.Model):
    value = models.DecimalField()
    def scaled_value(self):
        scaled_val = float(self.value) * 3
        return scaled_val
    def add_val_and_scaled_val(self):
        sum = self.scaled_value + self.value
        return sum

当我尝试从' add_val_and_scaled_val'获得总和的价值时在我的模板中的方法,如{% Object.add_val_and_scaled_val %}然后我得到TypeError ...

TypeError at /objects/detail/object-12345678/
unsupported operand type(s) for +: 'instancemethod' and 'Decimal'

错误引用的实例方法(self.scaled_value)应该返回小数值,如果不是的话?我究竟做错了什么?感谢。

2 个答案:

答案 0 :(得分:1)

WHERE facilities LIKE '1b1%' OR facilities LIKE '%c5%' 是一种方法,您需要在计算中调用它,而不仅仅是引用它。

scaled_value

(虽然我不确定这些代码的含义.x * 3 + x只等于x * 4,不是吗?)

答案 1 :(得分:0)

  

错误引用的实例方法(self.scaled_value)应返回小数值,如果不是

def scaled_value(self):
    scaled_val = float(self.value) * 3
    return scaled_val

不,不应该,因为在scaled_value中你明确地转换为float

您还需要更改此代码

def add_val_and_scaled_val(self):
    sum = self.scaled_value() + self.value # you had self.scaled_value
    return sum

您应该重新考虑添加floatDecimal

最后,建议不要使用sum隐藏内置sum = ...函数