Django查询设置过滤与concat

时间:2016-07-06 11:09:13

标签: django django-orm

我想基于可通过UserProfile访问的concat(first_name,last_name)来过滤用户。

if user.profile.first_name + ' ' +  user.profile.last_name LIKE query

我所拥有的只是User.objects.all()

我尝试了一些带有extra(),ComplexQuery,annotation()的东西,但是没有一个工作......

任何想法怎么做?

1 个答案:

答案 0 :(得分:2)

你走了:

from django.contrib.auth.models import User
from django.db.models import Value, Func, F, CharField

User.objects.annotate(full_name=Func(F('first_name'), Value(' '), F('last_name'), function='CONCAT', output_field=CharField())).filter(full_name__icontains='Dusan Plavak')

更新#1:

User.objects.annotate(full_name=Func(F('profile__first_name'), Value(' '), F('profile__last_name'), function='CONCAT', output_field=CharField())).filter(full_name__icontains='Dusan Plavak')