比方说,如果我有一个有很多领域的典范,但我只关心一个charfield.让说charfield可以是任何东西,所以我不知道可能的值,但我知道,频繁的值重叠.所以,我可以有20个对象与"ABC"和10个对象与"XYZ"我也可以有"高清"和80"STU" 50个对象和我有40000没有重叠,我真的不关心.
如何有效地计算对象?我想要归还的是:
{'abc':20,'xyz':10,'其他':10,000}
或类似的东西,没有进行大量的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}
希望有人会看到这个编辑...
显然,我的数据库(BigTable的)不支持的Django的聚合函数,这就是为什么我一直有所有问题.