我正在使用事务模型来跟踪通过系统的所有事件
class Transaction(models.Model):
actor = models.ForeignKey(User, related_name="actor")
acted = models.ForeignKey(User, related_name="acted", null=True, blank=True)
action_id = models.IntegerField()
......
Run Code Online (Sandbox Code Playgroud)
如何获得系统中的前5名演员?
在sql中它基本上是
SELECT actor, COUNT(*) as total
FROM Transaction
GROUP BY actor
ORDER BY total DESC
Run Code Online (Sandbox Code Playgroud) 比方说,如果我有一个有很多领域的典范,但我只关心一个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的聚合函数,这就是为什么我一直有所有问题.
我基本上喜欢和这个问题一样,但是通过两个值的组合进行分组,而不仅仅是一个:
SELECT player_type, team, COUNT(*) FROM players GROUP BY player_type, team;
Run Code Online (Sandbox Code Playgroud)
有没有人知道在Django中这是否可行以及如何实现?我正在使用1.2.
我试图获取特定列中所有不同值的计数,例如我在模型名称MyModel中有以下表:
Id City vendor
1 Mumbai 2
2 Pune 3
3 Mumbai 1
4 Yavatmal 2
5 Pune 5
Run Code Online (Sandbox Code Playgroud)
我正在寻找像这样的输出:
[{'Mumbai':2},{'Pune':2},{'Yavatmal':1}]
Run Code Online (Sandbox Code Playgroud)