我想做的和这个djangoproject.com上的这张票差不多,只是需要一些附加格式。从这个查询开始。
>>> MyModel.objects.values('cryptic_value_name')
[{'cryptic_value_name': 1}, {'cryptic_value_name': 2}]
我想要获取类似这样的东西:
>>> MyModel.objects.values(renamed_value='cryptic_value_name')
[{'renamed_value': 1}, {'renamed_value': 2}]
有没有其他更内置的方法,还是我必须手动完成这个过程?
django>=1.8
。查询表达式使annotate
能够接受聚合以外的表达式。参考链接:https://docs.djangoproject.com/en/1.9/releases/1.8/#query-expressions-conditional-expressions-and-database-functions。 - YeoMyModel.objects.values(renamed_value='cryptic_value_name')
- wimMyModel.objects.values(renamed_value=models.F('cryptic_value_name'))
的作用是获取MyModel
对象中cryptic_value_name
字段的值,并将其重命名为renamed_value
。 - jarcoalvalues()
的关键字参数会通过annotate()
自动传递(请参阅https://docs.djangoproject.com/en/2.2/ref/models/querysets/#django.db.models.query.QuerySet.values)。在我看来,使用`MyModel.objects.values(renamed_value=F('cryptic_value_name'))`更简单明了。 - tobias.mcnulty