2013-05-03 27 views
1

我在django中使用搜索字段,它根據酒店名稱從酒店表中搜索酒店名稱。 搜索我使用的Django的功能__search在django中排序表記錄

data=request.POST.get("data") 
data=models.hotels.objects.filter(name__search=name) 

默認情況下,它會搜索BOOLEAN MODE

SELECT name FROM table WHERE MATCH(name)AGAINST('data' IN BOOLEAN MODE); 

但結果正在添加按照最好成績不佈置匹配 有任何改變搜索功能的方法使這樣的查詢:

SELECT name FROM table WHERE MATCH(name)AGAINST('data'); 

刪除布爾排序模式與th最佳匹配?

+0

這個的幾點建議:http://stackoverflow.com/questions/3529703/django-full-通過相關文本搜索排序 – apoq 2013-05-03 18:02:33

+0

或嘗試原始sql查詢:https://docs.djangoproject.com/en/dev/topics/db/sql/ – apoq 2013-05-03 18:03:04

回答

1

在Django中使用「搜索」很容易。這裏我試圖從生成的報告中搜索名稱。

from django.db.models import Q 

def report(request): 
    data = Subscribers.objects.all() 
    template = 'report.html' 
    query = request.GET.get("q") 
    if query: 
     data = data.filter(
      Q(billNumber__icontains=query) | 
      Q(name__icontains=query) | 
      Q(area__icontains=query) | 
      Q(phoneNumber__icontains=query) 
     ).distinct() 
    return render(request, template, {'entries': data}) 

在要實現搜索添加以下代碼的html頁面:

<form> 
    <input type="text" name="q" placeholder="Search Subscribers.." value="{{ request.GET.q }}"> 
</form>