2016-07-06 84 views
0

我想根據可通過UserProfile訪問的concat(first_name,last_name)過濾用戶。Django查詢設置過濾器與concat的關係

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

我只有User.objects.all()

我嘗試了一些東西,有額外的(),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