Django在另一列中“分组依据”之后的一列的总和值

tup*_*pan 4 django django-models

我在这里和django文档中找到了一些解决方案,但是我无法以我想要的方式使一个查询工作。

我有以下模型:

class Inventory(models.Model):
    blindid = models.CharField(max_length=20)
    massug = models.IntegerField()
Run Code Online (Sandbox Code Playgroud)

我想计算Blind_ID的数量,然后将它们分组后的质量。

我目前的Django ORM

samples = Inventory.objects.values('blindid', 'massug').annotate(aliquots=Count('blindid'), total=Sum('massug'))
Run Code Online (Sandbox Code Playgroud)

它计数不正确(仅显示一个),因此计数不正确。这似乎是只得到第一个结果......我试着用Count('blindid', distinct=True)Count('blindid', distinct=False)为好。

这是使用的查询结果samples.query。Django按两列分组...

SELECT "inventory"."blindid", "inventory"."massug", COUNT("inventory"."blindid") AS "aliquots", SUM("inventory"."massug") AS "total" FROM "inventory" GROUP BY "inventory"."blindid", "inventory"."massug"
Run Code Online (Sandbox Code Playgroud)

这应该是原始sql

SELECT blindid, 
       Count(blindid) AS aliquots,
       Sum(massug) AS total
       FROM inventory 
       GROUP BY blindid
Run Code Online (Sandbox Code Playgroud)

Win*_*oon 5

尝试这个:

samples = Inventory.objects.values('blindid').annotate(aliquots=Count('blindid'), total=Sum('massug'))
Run Code Online (Sandbox Code Playgroud)