第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何制作使用“姓名”的搜索表單

如何制作使用“姓名”的搜索表單

手掌心 2023-10-31 16:32:53
基本上問題是,目前如果我搜索確切的“姓名”或確切的“姓氏”,我的搜索欄正在工作,但是,如果用戶搜索“姓名”或者即使用戶搜索“姓氏”,我希望它也能工作。名字或姓氏拼寫錯誤,但兩者中至少有一個是正確的。def search(request):    query = request.GET.get("q", None)    qs = DeathAd.objects.all()    if query is not None:        qs = qs.filter(            Q(nome__icontains=query) |            Q(cognome__icontains=query)        )    context = {        "object_list": qs,    }    template = "search.html"    return render(request, template, context)
查看完整描述

2 回答

?
墨色風(fēng)雨

TA貢獻(xiàn)1853條經(jīng)驗 獲得超6個贊

您可以使用、 空格和的[?.annotate(…)Django-doc]來Concat[Django-doc]查詢集:namecogname


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)

)

(...) 或者即使用戶拼錯了名字或姓氏,但兩者中至少有一個是正確的。

為此,您將需要更高級的搜索技術(shù),例如Elasticsearch后端,并且您可以利用django-haystack[readthedocs]與這些后端進(jìn)行對話。


查看完整回答
反對 回復(fù) 2023-10-31
?
HUX布斯

TA貢獻(xiàn)1876條經(jīng)驗 獲得超6個贊

也許在那里做一些Python。為什么不使用“ ”破折號分割查詢,將名字和姓氏分隔到一個列表中。然后創(chuàng)建一個空列表來追加。像這樣,


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)

如果需要,您可以使用集合以防出現(xiàn)重復(fù)結(jié)果


查看完整回答
反對 回復(fù) 2023-10-31
  • 2 回答
  • 0 關(guān)注
  • 213 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號