【发布时间】:2011-04-06 02:32:09
【问题描述】:
假设我有一个包含很多字段的模型,但我只关心一个字符字段。假设 charfield 可以是任何东西,所以我不知道可能的值,但我知道这些值经常重叠。所以我可以有 20 个带有“abc”的对象和 10 个带有“xyz”的对象,或者我可以有 50 个带有“def”的对象和 80 个带有“stu”的对象,我有 40000 个没有重叠的对象,我真的不在乎。
如何有效地计算对象?我想要返回的是这样的:
{'abc': 20, 'xyz':10, '其他': 10,000}
或类似的东西,无需进行大量 SQL 调用。
编辑:
我不知道是否有人会看到这个,因为我编辑它有点晚了,但是......
我有这个模型:
类动作(模型。模型): 作者 = 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 的聚合函数,这就是为什么我遇到了所有问题。
【问题讨论】:
标签: django django-models django-queryset