2 回答
TA贡献1853条经验 获得超6个赞
您可以使用、 空格和的[ .annotate(…)
Django-doc]来Concat
[Django-doc]查询集:name
cogname
from django.db.models import Value
from django.db.models.functions import Concat
qs = qs.annotate(
full_name=Concat('nome', Value(' '), 'cognome')
).filter(
Q(nome__icontains=query) |
Q(cognome__icontains=query) |
Q(full_name__icontains=query)
)
(...) 或者即使用户拼错了名字或姓氏,但两者中至少有一个是正确的。
为此,您将需要更高级的搜索技术,例如Elasticsearch后端,并且您可以利用django-haystack
[readthedocs]与这些后端进行对话。
TA贡献1876条经验 获得超6个赞
也许在那里做一些Python。为什么不使用“ ”破折号分割查询,将名字和姓氏分隔到一个列表中。然后创建一个空列表来追加。像这样,
def search(request):
query = request.GET.get("q", None).split(' ')
q_list = []
if query is not None:
for qs in query:
result = DeathAd.objects.filter(qs)
q_list.append(result)
context = {
"object_list": q_list,
}
template = "search.html"
return render(request, template, context)
如果需要,您可以使用集合以防出现重复结果
添加回答
举报