Python 在Django QuerySet.values调用中对dict键进行别名
使用时,是否有方法将密钥名称别名为其他名称?例如,如何使名为“currency”的dict键与以下输出类似,而不是显示直通关系的输出Python 在Django QuerySet.values调用中对dict键进行别名,python,django,Python,Django,使用时,是否有方法将密钥名称别名为其他名称?例如,如何使名为“currency”的dict键与以下输出类似,而不是显示直通关系的输出currency\u currency\u code: >>> ppcs.values('price', 'currency__currency_code') [{'price': Decimal('562.00'), 'currency__currency_code': u'JPY'}] 上述想法的问题在于,在这个阶段,我不想要列表(也不想要生
currency\u currency\u code
:
>>> ppcs.values('price', 'currency__currency_code')
[{'price': Decimal('562.00'), 'currency__currency_code': u'JPY'}]
上述想法的问题在于,在这个阶段,我不想要列表(也不想要生成器对象),我希望输出保持第一个示例中的
ValuesQuerySet
克拉斯克的评论完全回答了这个问题(谢谢)-->
简而言之,这里是Django 1.8+解决方案:
>>> keys = ['price', 'currency']
>>> [dict(zip(keys, v)) for v in ppcs.values_list('price', 'currency__currency_code')]
[{'currency': u'JPY', 'price': Decimal('562.00')}]
不幸的是,这在Django v1.7或更早版本中是不可能的
我更喜欢票证中最初建议的以下语法,并避免导入笨重的F
对象,但不导入骰子
from django.db.models import F
ppcs.annotate(currency=F('currency__currency_code')).values('price', 'currency')
可能重复的
ppcs.values('price', currency='currency__currency_code')