django - 如何在 Django QuerySet 中按查询进行分组?

标签 django django-models django-queryset

我的Django模型:

class MyModel(models.Model):
    a = IntegerField()
    b = IntegerField()

我想编写一个查询集来回答以下问题:“对于 a 的每个不同值,b 的最小值、最大值和平均值是多少?”

我该怎么做?

SQL 看起来像这样:
SELECT a, min(b), max(b), avg(b) FROM MyModel group by a

但我不知道如何使用 aggregateannotate方法。文档中的所有示例都展示了在对分组的同一变量进行平均时如何使用这些方法。

最佳答案

您可以使用 Django aggregation framework :

from django.db.models import Max, Min, Avg

MyModel.objects.values('a').annotate(Min('b'), Max('b'), Avg('b'))
values('a')此处的部分基本上是指“按 a 分组”。

关于django - 如何在 Django QuerySet 中按查询进行分组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28733633/

相关文章:

python - 重新加载后找不到我的自定义模型管理 url 的反向(sys.modules ['urls.py' ])

python - 安装 psycopg2 失败 python 3.7

Django 评论应用程序 : How do I disable the redirection to posted. html?

django - 如何在 Django ORM 中的 From 子句中编写子查询

python - Django 查询集 : aggregate after slicing the queryset doesn't work

python - 带有条件函数 When (?) 的 Django 查询

python - 在 Django 中使用过滤器获取最新记录

python - AppRegistryNotReady 错误与 django 1.7 和自定义用户

python - 它是如何工作的,Django INSTALLED_APPS 的命名约定?

django - 为什么 django 强制所有模型类都在 models.py 中?