Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.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
Python 如何访问.value()queryset结果的键_Python_Django_Django Queryset - Fatal编程技术网

Python 如何访问.value()queryset结果的键

Python 如何访问.value()queryset结果的键,python,django,django-queryset,Python,Django,Django Queryset,我有一个查询集: p = RespuestaPreguntaSeleccionMultiple.objects.all().values('respuesta').annotate(Count('respuesta')) 结果是: [{'respuesta__count': 2, 'respuesta': u'Una vez'}] 我只需要访问respuesta\uu count或respuesta键,我的意思是,只需要获取2或“Una vez”,以便最终将其传递到模板,我如何实现这一点?您

我有一个查询集:

p = RespuestaPreguntaSeleccionMultiple.objects.all().values('respuesta').annotate(Count('respuesta'))
结果是:

[{'respuesta__count': 2, 'respuesta': u'Una vez'}]
我只需要访问
respuesta\uu count
respuesta
键,我的意思是,只需要获取
2
“Una vez”
,以便最终将其传递到模板,我如何实现这一点?

您正在寻找的

它将返回值为
[('Una vez',2)]

编辑:

因此,似乎每个值都需要两个列表。如果是这样,那么您可以这样做:

p = RespuestaPreguntaSeleccionMultiple.objects.all().values_list(
    'respuesta').annotate(Count('respuesta'))
respuesta_set, counts = zip(*p)

在这种情况下,
respuesta_set
将等于
['Una vez']
计数
将等于
[2]

您需要迭代结果列表:

p = RespuestaPreguntaSeleccionMultiple.objects.all().values('respuesta').annotate(Count('respuesta'))

for item in p:
    item['respuesta__count']  # This will return 2
    item['respuesta']  # This will return 'Una vez'

谢谢,但是有没有办法单独打印“Una vez”或“2”呢?我不知道你的意思。你能举一个你想如何使用它的例子吗?在简历中,我必须显示一个投票结果的条形图,因为我需要计算一个特定结果出现的次数,所以在Y轴中我需要打印“Una vez”,在X轴中显示“2”,我需要用分隔符打印每个键。我编辑了我认为您需要的答案。谢谢,我找到了解决方案,正如有人告诉我的,只需重复结果列表。
p = RespuestaPreguntaSeleccionMultiple.objects.all().values('respuesta').annotate(Count('respuesta'))

for item in p:
    item['respuesta__count']  # This will return 2
    item['respuesta']  # This will return 'Una vez'