This topic created in 3650 days ago, the information mentioned may be changed or developed.
比如下面这段:
m.User.objects.values('id', 'coreuserwxprofile__nickname').filter(
coreuserwxprofile__nickname__contains=q).all()[0:20]
我要是希望返回结果是这样的:
[{'id':1,'nick':'tom'}]
应该怎么做呢?
谢谢~~~
4 replies • 2016-05-27 16:13:12 +08:00
 |
|
1
linuxchild May 18, 2016
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'}]
|
 |
|
2
yutian2211 May 18, 2016 1
from django.db.models import F
User.objects.annotate(nickname=F('coreuserwxprofile__nickname')).values('id','nickname').filter( coreuserwxprofile__nickname__contains=q).all()[0:20]
------------------- 网上可以搜得到的
|
 |
|
3
daimoon May 19, 2016
@ yutian2211 谢谢啊。 annotate 真是用不熟。 extra 也可以的。.extra(select={'nick': 'coreuserwxprofile.nickname'}
|
 |
|
4
daimoon May 27, 2016
谢谢大家啊。最后我就是用的 yutian 的 annotate :)
|