如何访问 .value() 查询集结果的键

How to access to a key of a result of .value() queryset

我有这个查询集:

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

结果是这样的:

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

我只需要访问 respuesta__countrespuesta 键,我的意思是,只需要 2"Una vez" 最终将它传递给模板,怎么可能我做到了吗?

您正在寻找 values_list

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

它将 return 的值设为 [('Una vez', 2)]

编辑:

所以您似乎希望每个值都有两个列表。如果是这样,那么您可以这样做:

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

在这种情况下,respuesta_set 将等于 ['Una vez']counts 将等于 [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'