Django Aggregation: наибольшая сумма в категориях

Привет, ребята

Мне интересно, как я могу получить наибольшую сумму одной категории.

Итак, у меня есть модель с моими категориями и модель с моими затратами, которая содержит категорию затрат.

Мой models.py

from django.db import models

class CostCat(models.Model):
    name = models.CharField(max_length=50, default=None, null=True, blank=True)


class Cost(models.Model):
    name = models.CharField(max_length=50, default=None, null=True, blank=True)
    cost_category = models.ForeignKey(CostCat, on_delete=models.CASCADE)
    amount = models.DecimalField(max_digits=12, decimal_places=2,null=True, blank=True)

В результате я должен показать категорию с наибольшей суммой затрат.

Я застрял на этом уже несколько часов. Ближе всего я подошел к этому с помощью моих тестов, как показано ниже.

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

views.py

def metrics(request):

    tests = CostCat.objects.annotate(sum=Sum('cost__amount'))

    for test in tests:

        print(test, test.sum)

    return render(request, 'metrics.html', "topcostcat":test, "topcostcatsum":test.sum )


Большая благодарность, если вы можете мне немного помочь!

Заранее спасибо

Вы можете заказать по стоимости и получить последнюю, так:

def metrics(request):
    topcat = CostCat.objects.annotate(sum=Sum('cost__amount')).latest('sum')
    return render(request, 'metrics.html', {'topcat': topcat})
Вернуться на верх