Django Вычисления в Model.py не обновляются без перезагрузки сервера

У меня есть несколько расчетов в моем файле Models.

Посылка заключается в том, что у меня есть "ставка", которая обновляется еженедельно, и это влияет на 2/3 столбцов в моей итоговой HTML-таблице.

Привожу последнюю ставку в таком виде:

class Hedge_rate(models.Model):
    id = models.IntegerField(primary_key=True)
    Hedge_rate = models.DecimalField(max_digits=10, decimal_places=5)

    def __str__(self):
        return "%s" % (self.Hedge_rate)

V = Hedge_rate.objects.all().first()
latest_rate = V.Hedge_rate

Тогда мои основные расчеты выглядят следующим образом:

@property
def spot_amount(self):
    return self.usd_amount/latest_rate

Проблема, с которой я столкнулся, заключается в том, что, допустим, "последняя ставка" в настоящее время "2" - если я затем обновлю эту цифру до "5", числа внутри расчета (а также если я 'выведу 'Последнюю ставку') останутся такими, как если бы последняя ставка по-прежнему была 2. Он обновляется до 5 только при перезагрузке сервера.

Я подозреваю, что это какая-то проблема с кэшированием? Есть ли способ вызвать "очистку" кэша при каждом отправлении формы при обновлении тарифа?

Как лучше всего решить эту проблему?

Вы должны получить последнюю ставку в функции, так:

@property
def spot_amount(self):
    latest = Hedge_rate.objects.first()
    return self.usd_amount/latest.Hedge_rate

иначе Django сделает единственный запрос при загрузке файла, в котором вы вычисляете последнюю ставку, и просто никогда не изменит его, независимо от того, создается ли новый Hedge_rate объект, или последний Hedge_rate удаляется или обновляется.

Это не проблема кэширования. Запрос Hedge_rate.objects.all().first() выполняется только один раз при запуске или перезапуске сервера, но когда значение обновляется в базе данных, запрос не будет выполняться снова. Вместо этого при расчете суммы из базы данных будет получено последнее значение.

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