>>> ppcs.values('price', 'currency__currency_code')
[{'price': Decimal('562.00'), 'currency__currency_code': u'JPY'}]
使用时QuerySet.values
,是否可以将键名别名为其他名称?例如,除了显示贯通关系的输出之外currency__currency_code
,如何像下面的输出那样制作称为“ currency”的字典键:
>>> 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
像第一个示例一样保持为a 。
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')
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句