Подсчет записей в базе данных по типу поля в django - PullRequest
2 голосов
/ 27 февраля 2011

У меня есть модель в моем проекте django, которая называется change, и в ней есть поле, называемое change_type. В поле change_type есть несколько значений, в том числе «move», «new», «edit» и другие, новые типы добавляются случайным образом в течение любого заданного периода времени. В настоящее время я использую обычные запросы django для выбора групп записей в модели изменений.

Существует ли быстрый способ определить, какие уникальные записи находятся в поле change_type? Есть ли быстрый способ вернуть счетчик каждого типа записи?

Ответы [ 4 ]

3 голосов
/ 27 февраля 2011

После нахождения решения это действительно просто.

Change.objects.all().values('change_type').distinct()
1 голос
/ 27 февраля 2011

Собираем это вместе:

 occurrences = {}
 change_types = Change.objects.values_list('change_type', flat=True).distinct()

 for type in change_types:
     occurrences[type] = Change.objects.filter(change_type=type).count()
0 голосов
/ 15 мая 2017

Теперь это может быть гораздо более эффективно реализовано с помощью агрегации :

Change.objects.values('change_type').annotate(Count('change_‌​type'))

Выход содержит поле change_type__count для каждого соответствующего change_type.

0 голосов
/ 27 февраля 2011

http://docs.djangoproject.com/en/dev/topics/db/managers/ возможно, это будет полезно для Вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...