我有这个查询集:
p = RespuestaPreguntaSeleccionMultiple.objects.all().values('respuesta').annotate(Count('respuesta'))
结果如下:
[{'respuesta__count': 2, 'respuesta': u'Una vez'}]
我只需要访问respuesta__count
或respuesta
密钥,我的意思是,只有获取2
或"Una vez"
才能最终将其传递给模板,我该如何实现此?
答案 0 :(得分:1)
您正在寻找values_list
p = RespuestaPreguntaSeleccionMultiple.objects.all().values_list(
'respuesta').annotate(Count('respuesta'))
它会将值返回为[('Una vez', 2)]
编辑:
因此,您似乎希望每个值都有两个列表。如果是这样,那么你可以这样做:
p = RespuestaPreguntaSeleccionMultiple.objects.all().values_list(
'respuesta').annotate(Count('respuesta'))
respuesta_set, counts = zip(*p)
在这种情况下,respuesta_set
将等于['Una vez']
,counts
将等于[2]
。
答案 1 :(得分:1)
您需要遍历结果列表:
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'