Как сравнить значение DecimalField в шаблонах Django для условной логики?
Я работаю над проектом Django, в котором у пользователей есть Account модель с DecimalField именем account_balance. Я пытаюсь условно отобразить ссылку для подтверждения KYC, если баланс пользователя равен ровно 100, и отобразить ошибку, если он меньше этого значения.
Вот мои настройки:
class Account(models.Model):
user = models.OneToOneField(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
account_balance = models.DecimalField(max_digits=10, decimal_places=2)
class KYC(models.Model):
user = models.OneToOneField(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
slug = models.SlugField()
views.py:
def settings(request):
kycs = KYC.objects.filter(user=request.user)
context = {
"kycs": kycs,
}
return render(request, 'public_pages/settings.html', context)
шаблон:
{% for kyc in kycs %}
<p>Your identity is important to the community</p>
{% if kyc.user.account.account_balance == 100 %}
<a href="{% url 'Kyc_Form' kyc.slug %}">Update KYC</a>
{% elif kyc.user.account.account_balance < 100 %}
<div class="alert alert-danger">
You need at least 100 coins before applying for KYC.
</div>
{% endif %}
{% endfor %}
Но этот блок никогда не отображает ни кнопку, ни сообщение об ошибке. Единственное, что я вижу, - это статический текст:
<p>Your identity is important to the community</p>
Я попробовал вывести баланс вне логики:
<p>Balance: {{ kyc.user.account.account_balance }}</p>
И он показывает что-то вроде 100,00. Я предполагаю, что это проблема с десятичной дробью.
Как я могу правильно сравнить DecimalField с account_balance в шаблоне Django, чтобы проверить, равно ли оно 100?
Попробуйте изменить DecimalField на FloatField, если проблема с DecimalField вам известна, и попробуйте сравнить их в представлениях и распечатать результаты