Почему мой метод сохранения не возвращает никакого значения

<
investment.basic_interest
<

class Investment(models.Model):
    basic_deposit_amount = models.IntegerField(default=0, null=True)
    basic_interest = models.IntegerField(default=0, null=True)

    def save(self, *args, **kwargs):
        self.basic_interest =  self.basic_deposit_amount * 365 * 0.02/2  #calculated field. 
        super(Investment, self).save(*args, **kwargs)
Я получаю 0. Почему он возвращает 0? Мне кажется, что мой метод сохранения написан неправильно. Есть идеи, откуда берется проблема?

Вам нужно вернуть то, что делает метод super(). Добавьте return к последней строке:

def save(self, *args, **kwargs):
    self.basic_interest =  self.basic_deposit_amount * 365 * 0.02/2  #calculated field. 
    return super(Investment, self).save(*args, **kwargs)

В зависимости от того, где вы проверяете значение investment.basic_interest в вашем коде. Приведенный вами фрагмент кода выполняется только при сохранении экземпляра (после вызова метода save()).

def test_view(request):
    investment = Investment()
    investment.basic_deposit_amount = 100

    print(investment.basic_interest) # Prints 0

    investment.save()

    print(investment.basic_interest) # Prints 365.0

Вернуться на верх