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})