我试图在我的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
)应该返回小数值,如果不是的话?我究竟做错了什么?感谢。
答案 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
您应该重新考虑添加float
和Decimal
最后,建议不要使用sum
隐藏内置sum = ...
函数