我有一个问题,我在Django做一个项目,有一个名为Pagos(Payments)的应用程序的一部分,在那里我显示了以下内容:已支付的款项,Total_Pagos(总付款)和待定付款.
为了显示这些付款的信息,我使用了mathfilters
,因为我的模板中使用了加法和减法.
对于模板,它正确地显示了信息,只有当我想要使用条件时才会出现问题,因为一旦待付款等于0.00,这意味着客户已经支付了所有款项,必须显示一个文本,上面写着"PAGADO"(已支付),当待付款时,它有另一个大于0.00的数字必须显示一个标签,说"PENDIENTE"(待付款).
这是我正在使用的代码,它是有效的,因为它向我显示了COSTO_SERVICIO(服务量)成本减go TOTAL_PAGOS(总付款)的结果,无论它显示的是未完成的付款,它可以显示几个数字或0.00:
{% for juicio in juicios %}
{{ juicio.costo_servicio|sub:total_pagos }}
{% endfor %}
但如果我这样做,它不会显示if,因此不会进行减法或显示文本PAGADO(PAGADO(PAYED)):
{% 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 %}
我会和你分享我的其他模型和我的观点:
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)
Models.py付款
class Pagos(models.Model):
cliente = models.ForeignKey(Cliente, on_delete=models.CASCADE)
monto_pago=models.IntegerField()
查看.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)