繁体   English   中英

在Django QuerySet.values调用中对dict键进行别名

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM