Скажем, если у меня есть модель, которая имеет много полей, но я забочусь только о поле char.Допустим, что charfield может быть чем угодно, поэтому я не знаю возможных значений, но я знаю, что значения часто перекрываются.Таким образом, у меня может быть 20 объектов с «abc» и 10 объектов с «xyz», или у меня может быть 50 объектов с «def» и 80 с «stu», и у меня 40000 без перекрытия, которые мне действительно безразличны.
Как эффективно считать объекты?Я хотел бы получить что-то вроде:
{'abc': 20, 'xyz': 10, 'other': 10000}
или что-то подобное, без созданиятонна вызовов SQL.
РЕДАКТИРОВАТЬ:
Я не знаю, увидит ли это кто-нибудь, так как я редактирую это немного позже, но ...
У меня есть эта модель:
class Action(models.Model):
author = models.CharField(max_length=255)
purl = models.CharField(max_length=255, null=True)
и из ответов я сделал это:
groups = Action.objects.filter(author='James').values('purl').annotate(count=Count('purl'))
но ...
вот что такое группы:
{"purl": "waka"},{"purl": "waka"},{"purl": "waka"},{"purl": "waka"},{"purl": "mora"},{"purl": "mora"},{"purl": "mora"},{"purl": "mora"},{"purl": "mora"},{"purl": "lora"}
(Я просто заполнил purl фиктивными значениями)
что я хочу, это
{'waka': 4, 'mora': 5, 'lora': 1}
Надеюсь, кто-то увидит это изменение ...
РЕДАКТИРОВАТЬ 2:
Видимо моя база данных (BigTable) не поддерживает агрегатные функции Django, и именно поэтому у меня возникли все проблемы.