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

2024-09-30 22:20:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个查询集:

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

结果是:

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

我只需要访问respuesta__countrespuesta键,我的意思是,只需要获取2"Una vez",以便最终将其传递给模板,我如何实现这一点?你知道吗


Tags: 模板objectscountallvaluesannotateunarespuesta
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'

你在找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]。你知道吗

相关问题 更多 >