Как сравнить значение 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 вам известна, и попробуйте сравнить их в представлениях и распечатать результаты

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