首页 > 解决方案 > 如何在 Django 中查询从两个单独的模型 CharField(名字和姓氏)构建的完整(或部分)名称?

问题描述

我正在尝试使用查询用户全名,但遇到了一些麻烦。当我查询“John”“Doe”时,我得到了正确的结果,但是当我查询“John Doe”时却没有。

虽然我知道我的查询是以这种方式显式构造的(名字姓氏),但我的问题是如何组合这些字段,以使“John Doe”、“John Do”、“Jon D”等中的任何一个都能产生正确的结果?

模型:

class Person(models.Model):
first_name = models.CharField(max_length=50)
last_name = models.CharField(max_length=50)

def __str__(self):
    return f"{self.last_name.title()}, {self.first_name.title()}"

看法:

def search_results(request):

query = request.GET.get('q')
person_list = Person.objects.filter(
    Q(first_name__icontains=query) | Q(last_name__icontains=query))
context = {'person_list': person_list}
return render(request, 'myapp/search_results.html', context)

标签: pythondjangodjango-modelsdjango-formsdjango-views

解决方案


推荐阅读