Django将另一列中'group by'后面的列的值相加

时间:2016-09-20 13:35:14

标签: django django-models

我在django documentation找到了一些解决方案,但我无法按照自己的方式设置一个查询。

我有以下型号:

IO.write("file_name.txt", your_array.join("\n"))

我想计算Blind_ID的数量,然后在它们被分组之后对该massug求和。

我目前的Django ORM

class Inventory(models.Model):
    blindid = models.CharField(max_length=20)
    massug = models.IntegerField()

它没有正确计数(它只显示一个),因此它没有正确求和。它似乎只得到了第一个结果......我也尝试使用samples = Inventory.objects.values('blindid', 'massug').annotate(aliquots=Count('blindid'), total=Sum('massug')) Count('blindid', distinct=True)

这是使用Count('blindid', distinct=False)的查询结果。 Django按两列分组......

samples.query

这应该是原始的sql

SELECT "inventory"."blindid", "inventory"."massug", COUNT("inventory"."blindid") AS "aliquots", SUM("inventory"."massug") AS "total" FROM "inventory" GROUP BY "inventory"."blindid", "inventory"."massug"

1 个答案:

答案 0 :(得分:5)

试试这个:

samples = Inventory.objects.values('blindid').annotate(aliquots=Count('blindid'), total=Sum('massug'))