Запрос Django возвращает несколько строк суммы, я хочу отобразить только одну строку

В настоящее время код написан так: у меня есть модель под названием Finances. У меня есть агрегат, настроенный так, что он суммирует все строки. Я пытаюсь отобразить итог строк, но когда я это делаю, отображается строка для каждой записи базы данных.

Я понимаю, что я захватываю все с .all() в viewpayout = Finances.objects.all() в views.py, но я не уверен, как это должно быть написано, чтобы отобразить только один ряд.

Как вывести только одну строку, которая суммирует все строки для столбца? Любая помощь будет высоко оценена!

Ниже приведен мой код:

views.py

def finances(request):
    viewpayout = Finances.objects.all()

    updatepayout = UpdatePayout()
    updatewithdraw = UpdateWithdraw()
    updatecash = UpdateCash()

    if request.method == "POST":
        if 'add_payout' in request.POST:
            updatepayout = UpdatePayout(request.POST)
        if updatepayout.is_valid():
            post = updatepayout.save(commit=False)
            post.save()
            return redirect("/finances")
        else:
            updatepayout = None


        if 'bank_withdraw' in request.POST:
            updatewithdraw = UpdateWithdraw(request.POST)
        if updatewithdraw.is_valid():
            post = updatewithdraw.save(commit=False)
            post.save()
            return redirect("/finances")
        else:
            updatewithdraw = None
            

        if 'add_cash' in request.POST:
            updatecash = UpdateCash(request.POST)
        if updatecash.is_valid():
            post = updatecash.save(commit=False)
            post.save()
            return redirect("/finances")
        else:
            updatecash = None
            
    return render(request, 'portal/finances.html', {"updatepayout": updatepayout, "updatewithdraw": updatewithdraw, "updatecash": updatecash, "viewpayout": viewpayout})

model.py

class Finances(models.Model):
    payout = models.DecimalField(null=True, max_digits=5, decimal_places=2, blank=True)
    withdraw = models.DecimalField(null=True, max_digits=5, decimal_places=2, blank=True)
    cash = models.DecimalField(null=True, max_digits=5, decimal_places=2, blank=True)
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateField(auto_now=True)

    def __str__(self):
        return self.payout + "\n" + self.withdraw + "\n" + self.cash

    @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 
        totalbank = totalwithdraw - totalcash
        return totalbank

finances.html

<li class="list-group-item active" aria-current="true">Finances</li>
  {% for finances in viewpayout %}
  <span class="list-group-item">Cash Available In Bank: <strong>{{ finances.Calculate_bank }}</strong></span>
  {% endfor %}
  {% for finances in viewpayout %}
  <span class="list-group-item">Cash Available On Hand: <strong>{{ finances.Calculate_cash }}</strong></span>
  {% endfor %}
  </ul>

Вот что выводится

Я знаю, что в базе данных у меня 9 записей, но как я могу отобразить только одну строку? output

Вернуться на верх