Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django-使用get\u FOO\u显示进行聚合_Django_Django Orm_Django Aggregation - Fatal编程技术网

Django-使用get\u FOO\u显示进行聚合

Django-使用get\u FOO\u显示进行聚合,django,django-orm,django-aggregation,Django,Django Orm,Django Aggregation,考虑以下几点: status = queryset.values('status').annotate(count=Count('status')) 其中,status字段是一个带有选项的CharField。这将产生一个字典列表,其中包含状态DB值及其计数 是否有方法聚合状态并显示其显示值?我已经查找了\u get\u FIELD\u display的代码,我可能可以对其进行模拟,但重复框架的内部代码感觉有点不太正常。如果不修改SQL,您可能无法在DB级别轻松实现这一点。但是,由于get\u

考虑以下几点:

status = queryset.values('status').annotate(count=Count('status'))
其中,
status
字段是一个带有
选项的
CharField
。这将产生一个字典列表,其中包含
状态
DB值及其计数


是否有方法聚合
状态
并显示其显示值?我已经查找了
\u get\u FIELD\u display
的代码,我可能可以对其进行模拟,但重复框架的内部代码感觉有点不太正常。

如果不修改SQL,您可能无法在DB级别轻松实现这一点。但是,由于
get\u FOO\u display
是在
Model
级别上运行的,因此您甚至不必手动破解
\u get\u FIELD\u display
或查找选项(如果以下方法不会使服务器花费太多):

因此


查看
django.contrib.admin.util.display\u for_字段
函数。您必须找到字段对象:

field = queryset.model._meta.get_field('status')
        
然后您可以将其用作:

display_for_field(status, field)
或者,在您的情况下:

{ unicode(display_for_field(t['status'], field)): t['count']
    for t in queryset.values('taxonomy').annotate(count=models.Count('taxonomy'))}

你能用输入->预期输出的例子更新你的问题吗?@Germano这个问题还不够清楚吗<代码>状态
->
状态
与其显示值聚合我的错,我错过了该状态的选择。
get\u FOO\u display
是动态添加的,它不能像您所说的那样使用,除非您另有意思。你能提供一个有效的例子吗?谢谢,这正是我想要的。这里的分类法说明了什么?既然status是他试图分组的列,为什么status不属于values args?我感兴趣的是在没有额外for循环的情况下完成这项工作。
display_for_field(status, field)
{ unicode(display_for_field(t['status'], field)): t['count']
    for t in queryset.values('taxonomy').annotate(count=models.Count('taxonomy'))}