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

时间:2015-07-16 22:34:20

标签: python django django-queryset

我有这个查询集:

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

结果如下:

[{'respuesta__count': 2, 'respuesta': u'Una vez'}]

我只需要访问respuesta__countrespuesta密钥,我的意思是,只有获取2"Una vez"才能最终将其传递给模板,我该如何实现此?

2 个答案:

答案 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'