Подсчитайте, сколько раз значение появляется в таблице
В моем приложении есть несколько форм, которые позволяют пользователю выбирать из выпадающего списка, и я пытаюсь подсчитать, сколько раз RED
, GREEN
и AMBER
были выбраны в 20 различных полях.
Я смотрел на
from django.db.models import Count
queryset = MyModel.objects.all().annotate(count = Count('my_charfield'))
Но я не уверен, как считать значения, а не тип поля?
Спасибо
Вы можете использовать условную агрегацию. Что-то в этом роде:
MyModel.objects.aggregate(
red=Sum(
Case(When(my_charfield="RED", then=1),
output_field=IntegerField())
),
green=Sum(
Case(When(my_charfield="GREEN", then=1),
output_field=IntegerField())
),
amber=Sum(
Case(When(account_type="AMBER", then=1),
output_field=IntegerField())
)
)
который затем вернет словарь значений
{red: 1, green: 10, amber: 101}