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()
выполняется только один раз при запуске или перезапуске сервера, но когда значение обновляется в базе данных, запрос не будет выполняться снова. Вместо этого при расчете суммы из базы данных будет получено последнее значение.