首页 > 解决方案 > Django - 选择 [列] AS

问题描述

我有以下代码:

MyModel.objects.values('foo','flu','fu').filter(part_of=pk)

这给了我以下字典:

{'foo': a, 'flu': b, 'fu': c}

该字典被序列化为 JSON 响应,如下所示:

JsonResponse(data, safe=False)

有没有办法可以'flu'在保留值的同时将键重命名为某个东西?

到目前为止,我尝试过:

values[0]['new_flu'] = values[0].pop('flu')

我认为这是重命名字典键的常用 Python 方式,但这似乎没有效果,返回的 JSON 仍然包含'flu'而不是new_flu.

我觉得这可以通过 ALIAS 简单地解决,例如。 SELECT foo, flu AS new_flu, fu from ..... 这个命令的 Django 替代方案是什么?还是有其他解决方案?

标签: python-3.xdjango

解决方案


其中一个选项是使用您需要的名称注释查询:

from django.models import F
MyModel.objects.filter(part_of=pk).annotate(new_flu=F('flu')).values('foo','new_flu','fu')

推荐阅读