Django 查询集过滤器与 concat 的关系
Django query set filter over relationship with concat
我想根据可通过 UserProfile 访问的 concat(first_name, last_name) 过滤用户。
if user.profile.first_name + ' ' + user.profile.last_name LIKE query
我只有User.objects.all()
我用 extra()、ComplexQuery、annotation() 尝试了一些东西,但是 none 它们在工作...
知道怎么做吗?
给你:
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')
我想根据可通过 UserProfile 访问的 concat(first_name, last_name) 过滤用户。
if user.profile.first_name + ' ' + user.profile.last_name LIKE query
我只有User.objects.all()
我用 extra()、ComplexQuery、annotation() 尝试了一些东西,但是 none 它们在工作...
知道怎么做吗?
给你:
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')