Django - 使用 get_FOO_display 聚合

标签 django django-orm django-aggregation

考虑以下:

status = queryset.values('status').annotate(count=Count('status'))

哪里status字段是 CharFieldchoices .这将产生一个带有 status 的字典列表。 DB 值及其计数。

有没有办法聚合status并显示其显示值?我查了_get_FIELD_display的代码我可能可以效仿,但重复框架的内部代码感觉有点hackish。

最佳答案

如果不破解 SQL,您可能无法在 DB 级别轻松实现这一点。但是,由于 get_FOO_display运作于 Model级别,您甚至不必破解 _get_FIELD_display或手动查找选项(如果以下方法不会使您的服务器花费太多):

YourModel(status=status).get_status_display()

因此
for s in queryset.values('status').annotate(count=Count('status')):
    print(queryset.model(status=s['status']).get_status_display())

关于Django - 使用 get_FOO_display 聚合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25060594/

相关文章:

django - 在Django的ORM中,有没有办法检测代码是否在事务内执行?

Django admin自定义字段按条件获取最新相关对象的结果

mysql - Django 选择范围内获得积分的用户计数

django - 注释在不存在的值上返回 null,我想将其转换为 null 为空字符串

django - 如何在 Django admin change_list 中为一列提供 CSS 类

python - Django filter() 查询在数据中给出额外的结果

Django 统计当月创建的对象

python - 如何在 Django 中过滤对象以进行计数注释?

python - 为什么 Django 创建带有时区的 Postgres 时间戳列?

python - REST 服务 Google Analytics 集成