我想基于可通过UserProfile访问的concat(first_name,last_name)来过滤用户。
if user.profile.first_name + ' ' + user.profile.last_name LIKE query
我所拥有的只是User.objects.all()
我尝试了一些带有extra(),ComplexQuery,annotation()的东西,但是没有一个工作......
任何想法怎么做?
答案 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')