Есть ли причины, по которым .distinct() выводит несколько строк? - Django/PostgreSQL
Есть ли какая-либо причина, по которой этот запрос Finances.objects.order_by('payout').distinct('payout')
все еще возвращает несколько строк? Он возвращает 3 строки.
У меня есть агрегатная функция, получающая сумму строк в базе данных. Это выглядит следующим образом:
@property
def Calculate_bank(self):
totalpayout = Finances.objects.all().aggregate(Sum('payout'))['payout__sum'] or 0.00
totalwithdraw = Finances.objects.all().aggregate(Sum('withdraw'))['withdraw__sum'] or 0.00
totalbank = totalpayout - totalwithdraw
return totalbank
@property
def Calculate_cash(self):
totalwithdraw = Finances.objects.all().aggregate(Sum('withdraw'))['withdraw__sum'] or 0.00
totalcash = Finances.objects.all().aggregate(Sum('cash'))['cash__sum'] or 0.00
totalcoh = totalwithdraw - totalcash
return totalcoh
Затем я использую запрос Finances.objects.order_by('payout').distinct('payout')
в view.py, и он отображает три строки одного и того же результата? Если я добавляю больше фильтров order_by
или distinct
, он дублирует три уже показанные строки. Я также пробовал фильтровать по id.
Если я не использую distinct, он показывает новую строку каждый раз, когда в базе данных есть запись.
view.py
@login_required(login_url="/login")
def finances(request):
viewfinances = Finances.objects.order_by('payout').distinct('payout')
return render(request, 'portal/finances.html', {"viewfinances": viewfinances})
шаблон
<div class="container">
<ul class="list-group">
<li class="list-group-item active" aria-current="true">Finances</li>
{% for finances in viewfinances %}
<span class="list-group-item">Cash Available In Bank: <strong>{{ finances.Calculate_bank }}</strong></span>
{% endfor %}
{% for finances in viewfinances %}
<span class="list-group-item">Cash Available On Hand: <strong>{{ finances.Calculate_cash }}</strong></span>
{% endfor %}
</ul>
</div>