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)
如果需要,您可以使用集合以防出現重復結果
添加回答
舉報