Получение верхних строк по одному столбцу Django

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

Например, в этом Сценарии:

| title | category       | count |
| ----- | -------------- | ----- |
| Pizza | food           | 6     |
| Pizza | others_expense | 1     |
| Pizza | refund         | 1     |

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

Пример кода

Я хочу получить результат, используя только Django ORM, потому что у меня есть разные базы данных и это быстрее, чем итерация над большим списком.

Модель:
class Movimentation(models.Model):
    title = models.CharField(max_length=50)
    value = models.FloatField()
    category = models.CharField(max_length=50)
Consult:

Моя фактическая консультация в Django ORM такова.

Movimentation.objects \
    .values('title', 'category') \
    .annotate(count=Count('*')).order_by('title', '-count')
Результат:
[
    {'title': 'Pizza', 'category': 'food', 'count': 6},
    {'title': 'Pizza', 'category': 'others_expense', 'count': 1},
    {'title': 'Pizza', 'category': 'refund', 'count': 1},
    {'title': 'Hamburguer', 'category': 'food', 'count': 1},
    {'title': 'Clothing', 'category': 'personal', 'count': 18},
    {'title': 'Clothing', 'category': 'home', 'count': 15},
    {'title': 'Clothing', 'category': 'others_expense', 'count': 1}
]
Ожидаемый результат:

В этом случае я получаю только одну строку по названию, с наиболее используемой категорией.

[
    {'title': 'Pizza', 'category': 'food', 'count': 6},
    {'title': 'Hamburguer', 'category': 'food', 'count': 1},
    {'title': 'Clothing', 'category': 'personal', 'count': 18}
]
Вернуться на верх