2017-12-09 8 views
1

Djangoでfullname(first_name concat last_name)検索/クエリを実行したいと思います。私たちは、このようなエントリを持ってたとえばDjangoのクエリーセットfirst_nameとlast_nameのフルネームconcatのクエリ

class Employee(models.Model): 
    user = models.OneToOneField(User, on_delete=models.CASCADE, related_name='employee') 
    company = models.ForeignKey(Company) 
    username = models.CharField(max_length=30, blank=False)  
    first_name = models.CharField(max_length=30, blank=False) 
    last_name = models.CharField(max_length=30, blank=False)  
    created_at = models.DateTimeField(auto_now_add=True) 

以下は、私のモデルです。 first_name: "Michael"、last_name: "Jackson"

「michael jackson」というフルネームを照会できるようにしたいと考えています。大文字と小文字を区別せずに表示することができれば偉大なこともあります

この他のstackoverflowの質問は似ていますが、答えは適切なQuerying full name in Djangoでこの特定の要件を満たしていません。私たちは、連合検索をすることができるようにしたい。

私は注釈を試みたが、これは働い

queryset = Employee.objects.annotate(fullname=Concat('first_name', 'last_name')) 
search_result = queryset.filter(fullname__icontains='michael jackson') 

答えて

0

仕事doesntの。

from django.db.models.functions import Concat 
from django.db.models import Value 

queryset = Employee.objects.annotate(fullname=Concat('first_name', Value(' '), 'last_name')) 
c = queryset.filter(fullname__icontains='michael jackson') 
関連する問題