suchen

Heim  >  Fragen und Antworten  >  Hauptteil

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

比如下面这段:

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

我要是希望返回结果是这样的:

[{'id':1,'nick':'tom'}] 

应该怎么做呢?
谢谢~~~

PHPzPHPz2889 Tage vor582

Antworte allen(2)Ich werde antworten

  • 高洛峰

    高洛峰2017-04-17 17:46:50

    from django.db.models import F
    
    User.objects.annotate(nick=F('coreuserwxprofile__nickname')).values('id', 'nick')

    Antwort
    0
  • 阿神

    阿神2017-04-17 17:46:50

    两种办法, 自己挑一种吧
    第一种:

    users = User.objects.filter(coreuserwxprofile__nickname__contains=q).values('id', 'coreuserwxprofile__nickname')[0:20]
    
    users = [{'id': _.id, 'nick': _.coreuserwxprofile__nickname} for _ in users]
    

    第二种:

    users = User.objects.filter(coreuserwxprofile__nickname__contains=q).extra(
        select = {'nick': 'coreuserwxprofile.nickname'}
    ).values('id', 'nick')[0:20]
    

    Antwort
    0
  • StornierenAntwort