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'