Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在Django QuerySet.values调用中对dict键进行别名_Python_Django - Fatal编程技术网

Python 在Django QuerySet.values调用中对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”的dict键与以下输出类似,而不是显示直通关系的输出
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')