Группировка аннотаций в кверисете

order_list = Order.objects.filter(
            is_deleted=0, order_status__in=[4], order_type=0)
order_list_data = order_list.annotate(
            customer_gross_sum=F('invoice__original_amount') -
            F('invoice__discount_amount')+F('invoice__tax_amount'),
            dcount=Count('user_id'),customer_transactions=F('invoice__transaction_invoice__transaction_amount'))
print(order_list_data.values())
        

enter image description here

из таблицы выше, customer_transactions в queryset вызывается в столбце payment в таблице. Второй и третий в таблице - это один и тот же счет с двумя транзакциями. Возможно ли свести это к одним данным.

ШАБЛОН

<table id="table">
  <thead>
    <td class="no-sort">Sl No</td>
    <td class="no-sort">BILL DATE</td>
    <td class="no-sort">BILL NO</td>
    <td>BILL VALUE (Rs)</td>
    <td>PAYMENT (Rs)</td>
    <td>BALANCE (Rs)</td>
  </thead>
  {% for data in order_list_data %}
  <tr>
    <td>{{forloop.counter}}</td>
    <td>{{data.invoice.bill_date}}</td>
    <td>{{data.invoice.bill_no}}</td>
    <td>{{data.customer_gross_sum}}</td>
    <td>{{data.customer_transactions}}</td>

    <td></td>
  </tr>
  {% endfor %}
</table>

Попробуйте это:

order_list_data = order_list.annotate(
    bill_date=F('invoice__bill_date'),
    bill_no=F('invoice__bill_no'),
    customer_gross_sum=F('invoice__original_amount') - F('invoice__discount_amount') + F('invoice__tax_amount'),
    customer_transactions=F('invoice__transaction_invoice__transaction_amount'),
    dcount=Count('user_id'),
).values(
    'bill_date',
    'bill_no',
).annotate(
    gross=Sum('customer_gross_sum'),
    transactions=Sum('customer_transactions')
)

А затем в вашем шаблоне:

    <td>{{forloop.counter}}</td>
    <td>{{data.bill_date}}</td>
    <td>{{data.bill_no}}</td>
    <td>{{data.gross}}</td>
    <td>{{data.transactions}}</td>
Вернуться на верх