Python ';计算';Django模型中作为字段的变量

Python ';计算';Django模型中作为字段的变量,python,django,django-models,django-model-field,Python,Django,Django Models,Django Model Field,我有一个简单的模型: class Atividade(models.Model): valor_brl = models.DecimalField(max_digits=14, decimal_places=2) dolar_ref = models.DecimalField(max_digits=14, decimal_places=2) valor_usd = models.DecimalField(max_digits=14, decimal_places=2)

我有一个简单的模型:

class Atividade(models.Model):
    valor_brl = models.DecimalField(max_digits=14, decimal_places=2)
    dolar_ref = models.DecimalField(max_digits=14, decimal_places=2)
    valor_usd = models.DecimalField(max_digits=14, decimal_places=2)
我创建了一个使用模型中的两个字段计算新值的方法

@property
def valor_usd_novo(self):
    valor_usd_novo = self.valor_brl / self.dolar_ref
    return valor_usd_novo
如果我调用
{{valor_usd_novo}}
我会得到我想要的结果

在此之后,我创建save()方法,将
valor_usd\u novo
保存到模型的
valor_usd
字段中

def save(self, *args, **kwargs):
    self.valor_usd = self.valor_usd_novo()
    super(Atividade, self).save(*args, **kwargs)
关键是,当我调用
valor_usd
时,我没有得到任何结果,数据库也不会使用
valor_usd_novo
方法的结果进行更新


我在这里遗漏了什么?

valod\u usd\u novo是一个
属性,因此您需要将其视为一个属性,而不是一个方法。因此,放弃调用并将其作为属性引用:

def save(self, *args, **kwargs):
    self.valor_usd = self.valor_usd_novo  # not self.valod_usd_novo()

我真的很感谢你的帮助。我找到了问题的解决方案:

def new_value(self, *args, **kwargs):
    self.valor_usd = self.valor_usd_novo
    super(Atividade, self).save(*args, **kwargs)
    return self.valor_usd

当我在模板中调用
{{atividade.new_value}}
时,我得到了新值和
self.valor_usd
更新中的值。

感谢您的快速回答。我已经试过了,但也没有结果。字段
valor_usd
在数据库中仍然没有值,如果我调用
{{atividade.valor_usd}
我仍然没有得到任何结果。@ViniciusCruvinel检查其他字段值是否正确,因为它从
self.valor_brl/self.dolar_ref
中获取值。是的。当我在模板中调用
{{atividade.valor_usd_novo}
(来自
def valor_usd_novo(self):
)时,我从除法中得到了正确的结果/值。当我重写save()方法并调用
{{{atividade.valor_usd}}
时,我什么都没有得到。