[英]Aliasing the dict keys in a Django QuerySet.values call
>>> ppcs.values('price', 'currency__currency_code')
[{'price': Decimal('562.00'), 'currency__currency_code': u'JPY'}]
使用QuerySet.values
,有没有办法将键名别名别名? 例如,如何显示通过关系currency__currency_code
的输出,如何在下面的输出中创建名为'currency'的dict键:
>>> keys = ['price', 'currency']
>>> [dict(zip(keys, v)) for v in ppcs.values_list('price', 'currency__currency_code')]
[{'currency': u'JPY', 'price': Decimal('562.00')}]
上面这个想法的问题是我在这个阶段不需要列表(也不是生成器对象),我希望输出仍然是第一个示例中的ValuesQuerySet
。
klasske的评论完全回答了这个问题(谢谢) - > https://code.djangoproject.com/ticket/16735
简而言之,这是Django 1.8+解决方案:
from django.db.models import F
ppcs.annotate(currency=F('currency__currency_code')).values('price', 'currency')
不幸的是,这在Django v1.7或更早版本中是不可能的。
我更喜欢票证中最初建议的以下语法,并且无需导入那个笨重的F
对象,但没有骰子。
ppcs.values('price', currency='currency__currency_code')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.