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}}
时,我什么都没有得到。