2016-07-06 2 views
0

UserProfileでアクセス可能なconcat(first_name、last_name)に基づいてユーザーをフィルタリングしたいと思います。Djangoクエリーセットがconcatとの関係上のフィルタ

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

私が持っているすべてのUser.objects.all(ある)

I)は、余分な(といくつかのものを試してみました、ComplexQuery、注釈()それらのどれも働いていなかった...

どれでもどのようにそれを行うアイデア?

答えて

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') 
+0

と何? –

+0

更新#1を参照してください。通常の方法と同様に、関連するモデルフィールドにアクセスできます。 – tennismogul

関連する問題