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

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

model.py

class sublist(models.Model):
      Music = 'Music'   
      Video = 'Video'
      Gaming = 'Gaming'
      News = 'News'
      Lifestyle = 'Lifestyle'
      Access = 'Access'

      SUBTYPE_CHOICES =(
     (Music , "Music"),
     (Video , "Video"),
     (Gaming , "Gaming"),
     (News , "News"),
     (Lifestyle , "Lifestyle"),
     (Access , "Online Access"),
     )
     author = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE,)
     name = models.CharField(max_length=150)
     cost = models.FloatField(default = 0)
     subtype = models.CharField(max_length= 50, choices = SUBTYPE_CHOICES, default = Access)

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

expenselist = sublist.objects.filter(author = curruser.id)
subtypecount = list((expenselist
                .annotate(subcount=Count('subtype'))
                .values('subtype', 'subcount')
                ))

результат запроса выше: [{'subtype': 'Access', 'subcount': 1}, {'subtype': 'Access', 'subcount': 1},{'subtype': 'Video', 'subcount': 1}]

Желаемый результат: [{'subtype': 'Access', 'subcount': 2},{'subtype': 'Video', 'subcount': 1}]

Вот запрос, который даст желаемый результат. Сначала используйте .values(), затем .annotate()

subtypecount = sublist.objects.filter(author = curruser.id).values('subtype').annotate(subcount=Count('subtype'))

или

expenselist = sublist.objects.filter(author = curruser.id)
subtypecount = list(expenselist.values('subtype').annotate(subcount=Count('subtype')))
Вернуться на верх