django queryset过滤问题

zen*_*enk 3 django django-models

我有一个模型,我想用搜索词过滤,这通常是一个名称.然而,在我的数据库first_namelast_name是两个不同的领域.

例如

search_term = 'Will Sm'

db_persons 记录: first_name = 'Will', last_name = 'Smith'

搜索词将能够检索此记录.

我怎样才能做到这一点?

db_persons.objects.filter(__?__)

更新:

寻找一种连接字段和查询连接结果而无需原始sql的方法

Ret*_*old 6

如果你想搜索第一个和姓氏,你可以简单地使用:

db_persons.objects.filter(first_name='Will', last_name='Smith')
Run Code Online (Sandbox Code Playgroud)

如果要在first_name或last_name中搜索,请使用Q对象:

from django.db.models.query_utils import Q
db_persons.objects.filter(Q(first_name='will') | Q(last_name='will'))
Run Code Online (Sandbox Code Playgroud)

根据评论更新:一个简单的解决方案可能如下所示:

search_string = 'will smith'
query_list = search_string.split()
db_persons.objects.filter(Q(first_name__in=query_list) | Q(last_name__in=query_list))
Run Code Online (Sandbox Code Playgroud)

如果您使用mysql,则可以使用搜索.