Я пытаюсь показать таблицу в шаблоне, которая показывает транзакции с их датами.
Запрос:
resultado = Asiento.objects.filter(
Empresa=request.session['codEmp'],
codcta=cod_cta
).exclude(anulado='S').order_by(date)
Но пользователь может установить флажок, еслиЗначение true должно показывать одну строку на дату в таблице.
Без группировки по:
+-------------------------------+-------+
| date | trans_in | trans_out | total |
+--------+----------+-----------+-------+
|2019/5/3| $5.000 | $0 | $5.000|
+--------+----------+-----------+-------+
|2019/5/3| $0 | $2.500 |-$2.500|
+--------+----------+-----------+-------+
|2019/5/4| $1.000 | $0 |$1.000 |
+--------+----------+-----------+-------+
И я пытаюсь сделать следующее:
+-------------------------------+-------+
| date | trans_in | trans_out | total |
+--------+----------+-----------+-------+
|2019/5/3| $5.000 | $2.500 |$2.500 |
+--------+----------+-----------+-------+
|2019/5/4| $1.000 | $0 |$1.000 |
+--------+----------+-----------+-------+
Я уже пытался сделать
resultado = Asiento.objects.filter(
Empresa=request.session['codEmp'],
codcta=cod_cta
).exclude(anulado='S').order_by(date).values('date').annotate(
dcount=Count('date')
)
Использование аннотации, но это не работает!Я действительно пока не могу понять, как упростить группировку.
Позже в коде я перебираю цикл for resultado
, чтобы добавить и вычесть сумму денег для каждого объекта в наборе запросов.
for asiento in resultado:
add = add+asiento.add
sub = sub+asiento.sub
asiento.total = asiento.add-asiento.sub
total = add-sub
ОБНОВЛЕНО:
Я прогрессировал в проблеме, поэтому я добавляю больше информации, чтобы решить эту проблему.Я использую следующий запрос:
resultado = Asiento.objects.filter(Empresa=request.session['codEmp'], codcta=cod_cta,
**query_kwargs).exclude(anulado='S')\
.order_by(orden).values('feasto').aggregate(dcount=Count('feasto'),
debe=Sum('debe'), haber=Sum('haber'))
И он работает нормально!Печать resultado
:
{'dcount': 3, 'debe': Decimal('27602.23'), 'haber': Decimal('0.00')}
Это правильно, потому что в запросе три объекта, все с одинаковой датой, и он правильно добавляет debe
(кредит).
Нотеперь я не могу понять, как правильно отобразить его в шаблоне, поскольку итерация с {% for asiento in resultado %}
печатает три строки с одинаковой датой.И я хочу только одну строку за аналогичную дату .
Также я не могу получить эти атрибуты строк, которые не соответствуют синтаксису .values().aggregate()...
и т. Д.