Из моего опыта работы с Django я бы сказал, что эти вещи нелегко сделать в шаблоне.Я пытаюсь сделать мои расчеты в представлении вместо шаблона.
Моя рекомендация будет состоять в том, чтобы вычислить две суммы, которые вам нужны в представлении вместо шаблона.шаблон с использованием пользовательских фильтров и тегов .При использовании фильтров это может выглядеть так:
<td>{% documento.cuentasxdocumento_set.all | sum_monto:"pos" %}</td>
<td>{% documento.cuentasxdocumento_set.all | sum_monto:"neg" %}</td>
Фильтры принимают два аргумента: значение, которое вы передаете фильтру, и аргумент, который можно использовать для управления его поведением.Вы могли бы использовать последний аргумент, чтобы сказать sum_monto
для суммирования положительных или отрицательных значений.
Это быстрая реализация непроверенного фильтра из головы:
from django import template
register = template.Library()
@register.filter
def sum_monto(cuentas, op):
if op == "pos":
return sum(c.monto for c in cuentas if c.monto > 0)
else
return sum(c.monto for c in cuentas if c.monto < 0)