Django 求和另一列中 'group by' 之后的列的值

标签 django django-models

我在这里和 django documentation 中找到了一些解决方案,但我无法按照我想要的方式进行一个查询。

我有以下模型:

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

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

我目前的 Django ORM
samples = Inventory.objects.values('blindid', 'massug').annotate(aliquots=Count('blindid'), total=Sum('massug'))

它没有正确计数(它只显示一个),因此它的总和不正确。似乎只得到第一个结果...我尝试使用 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"

这应该是原始的 sql
SELECT blindid, 
       Count(blindid) AS aliquots,
       Sum(massug) AS total
       FROM inventory 
       GROUP BY blindid

最佳答案

尝试这个:

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

关于Django 求和另一列中 'group by' 之后的列的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39595618/

相关文章:

python - 当 unique_together 应用于 django-rest 时,SlugRelatedField 的查询集值

javascript - 如何在 Javascript/Python/Django 中向数字添加千位分隔符

python - django 标记 - 按标记过滤

Django 重定向到 kwarg 不起作用的 View

sql - 地址簿数据库设计 : denormalize?

Django 模型 - 在保存/创建之前

python - 从数据库模型中向登录用户显示他们自己的信息

python - Django删除 super 用户

python - 有没有办法查看由 django 上的 bulk_create 执行的原始 SQL?

python - 如何存储动态可变数量的对象的顺序(在 python 中)?