«Вычислить» переменные как поля в модели Джанго - PullRequest
0 голосов
/ 31 октября 2019

У меня есть простая модель:

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_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.

Что мне здесь не хватает?

1 Ответ

1 голос
/ 31 октября 2019

valod_usd_novo - это property, поэтому вам нужно рассматривать его как атрибут, а не метод. Следовательно, отбросьте вызов и обратитесь как атрибут:

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