Как использовать условие if else с помощью математических фильтров в Django?

У меня есть вопрос, я делаю проект на Django и есть часть приложения под названием Pagos(payments), там я показываю следующее: payments made, total_pagos(total payment) и pending payment,

Для отображения информации об этих платежах я использую mathfilters, потому что сложение и вычитание используются в моих шаблонах.

Для шаблона он отображает информацию правильно, только проблема возникает, когда я хочу использовать условные знаки, так как когда отложенный платеж равен 0.00, это означает, что клиент уже все оплатил и должен показать текст, который говорит "PAGADO" (оплачено), когда отложенный платеж имеет другое число, чем 0.00, должен показать метку, которая говорит "PENDIENTE" (отложено).

Вот код, который я использую, и он работает, так как он показывает мне результат стоимости costo_servicio (сумма услуги) минус total_pagos (общая сумма платежей), все, что он показывает, является предстоящим платежом, он может показывать несколько чисел или 0.00:

{% for juicio in juicios %}                                                            
       {{ juicio.costo_servicio|sub:total_pagos }}
{% endfor %}

Но если я поставлю это, то он не покажет if и, следовательно, не выполнит вычитание и не покажет текст PAGADO(paid):


  {% for juicio in juicios %}
          {% if juicio.costo_servicio|sub:total_pagos == 0.00 %}
             {{ juicio.costo_servicio|sub:total_pagos }}
             <td class="text-right"><span class="saldo-pagado" ><strong>PAGADO</strong></span></td>
            {% endif %}
   {% endfor %}

Я поделюсь с вами остальными моделями и своими взглядами:

juicios models.py


class Juicios(models.Model):
    cliente = models.ForeignKey(Cliente, on_delete=models.CASCADE)
    no_expediente_cv = models.CharField(max_length=100)
    costo_servicio=models.DecimalField(max_digits=10, decimal_places=2)

pagos models.py

class Pagos(models.Model):
    cliente = models.ForeignKey(Cliente, on_delete=models.CASCADE)   
    monto_pago=models.IntegerField()
pagos view.py

def PagosDetalle(request, cliente_id):
    context = {}
    cliente = Cliente.objects.get(id=cliente_id)
    pagos = Pagos.objects.filter(cliente=cliente_id)
    juicios = Juicios.objects.filter(cliente=cliente_id)
    total_pagos = Pagos.objects.filter(cliente=cliente).aggregate(sum_of_all_orders=Sum('monto_pago'))
    pagos_filtrados=Pagos.objects.filter(cliente=cliente)

    context["pagos"] = pagos
    context["pagos_filtrados"] = pagos_filtrados
    context["total_pagos"] = total_pagos['sum_of_all_orders']
    if juicios:
        context["juicios"] = juicios

    return render(request, "pagos-detalle.html",context)

Вы можете использовать тег with для хранения результата вычисления в переменной шаблона, например:

{% with juicio.costo_servicio|sub:total_pagos as result %}
  {% if result == 0 %}
     ...
  {% endif %}
{% endwith %}
Вернуться на верх