请教一个 django 数据库查询字段重命名的问题

2016-05-18 14:52:30 +08:00
 daimoon
比如下面这段:
m.User.objects.values('id', 'coreuserwxprofile__nickname').filter(
coreuserwxprofile__nickname__contains=q).all()[0:20]
我要是希望返回结果是这样的:
[{'id':1,'nick':'tom'}]
应该怎么做呢?
谢谢~~~
4395 次点击
所在节点    Python
4 条回复
linuxchild
2016-05-18 16:17:50 +08:00
In [9]: a = [{'name': 'wang', 'id': 1}, {'name': 'zhao', 'id': 2}]

In [10]: [{'nick': i['name'], 'id': i['id']} for i in a]
Out[10]: [{'id': 1, 'nick': 'wang'}, {'id': 2, 'nick': 'zhao'}]
yutian2211
2016-05-18 17:55:15 +08:00
from django.db.models import F

User.objects.annotate(nickname=F('coreuserwxprofile__nickname')).values('id','nickname').filter(
coreuserwxprofile__nickname__contains=q).all()[0:20]



-------------------
网上可以搜得到的
daimoon
2016-05-19 20:05:25 +08:00
@yutian2211 谢谢啊。 annotate 真是用不熟。 extra 也可以的。.extra(select={'nick': 'coreuserwxprofile.nickname'}
daimoon
2016-05-27 16:13:12 +08:00
谢谢大家啊。最后我就是用的 yutian 的 annotate :)

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/279544

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX