2010-10-26 71 views
0

你好我最近一直在Django的搜索表單上工作,並且已經厭倦了編輯一個我自己。這是一個應該找到客戶的搜索表單。但是,當我鍵入客戶名稱時,它不顯示該客戶的名稱。所以我想知道我做錯了什麼。Django搜索表單,我不能使它工作

#model.py 
    class Client(models.Model): 
     company = models.CharField(max_length=80) 
     first_name = models.CharField(max_length=80, blank=True, null=True) 
     last_name = models.CharField(max_length=80, blank=True, null=True) 
     address = models.CharField(max_length=250) 
     city = models.CharField(max_length=100) 
     country = models.CharField(max_length=120) 
     postcode = models.CharField(max_length=7) 
     telephone = models.CharField(max_length=20) 
     email = models.EmailField() 
     additional_info = models.TextField(blank=True, null=True) 

     def __unicode__(self): 
       return self.company 
#views.py 
@login_required 
def search_client(request): 
    query = request.GET.get('q', '') 
    if query: 
     qset = (
     Q(company__icontains=query) | 
     Q(address__icontains=query) | 
     Q(postcode__icontains=query) 
     ) 
     results = Client.objects.filter(qset).distinct() 
    else: 
     results = [] 
    return render_to_response("search_clients.html", { 
     "results": results, 
     "query": query 
}, context_instance=RequestContext(request)) 


    #search_clients 
{% extends "base.html" %} 

    {% block content %} 
    <h1>Search</h1> 
     <form action="." method="GET"> 
     <label for="q">Search: </label> 
     <input type="text" name="q" value="{{ query|escape }}"> 
     <input type="submit" value="Search"> 
     </form> 

     {% if query %} 
     <h2>Results for "{{ query|escape }}":</h2> 

     {% if results %} 
      <ul> 
      {% for clients in results %} 
      <li>{{ clients|escape }}</l1> 
      {% endfor %} 
      </ul> 
     {% else %} 
      <p>No clients found</p> 
     {% endif %} 
     {% endif %} 
    {% endblock %} 
+0

你得到的輸出是什麼?任何錯誤消息? – 2010-10-26 12:05:39

+0

正如我所說沒有錯誤信息。我收到一個搜索框。鍵入一個客戶端,我知道它在數據庫上,但它不會返回給我那個客戶端。而是顯示客戶端。它甚至不顯示「找不到客戶」。 – Shehzad009 2010-10-26 12:12:52

回答

-1

好吧看起來好像知道它正常工作。奇怪的是我不知道它是如何開始正常工作的。我可能在更改時重新啓動了服務器,或者可能是我的urls.py文件。我真的不知道,但現在看起來好了。

1

難道是因爲您是按公司,地址和郵編搜索的,而不是按客戶名稱搜索?

+0

我不這麼認爲。當我的意思是客戶名字時,我正在談論客戶公司。我正在做這樣的事情,這個http://www.djangobook.com/en/1.0/chapter07/ – Shehzad009 2010-10-26 11:32:23

+0

代碼對我來說很合適。嘗試在所有地方使用「print」語句來查看實際正在進行的操作,並調用正確的視圖等。然後嘗試在Client.objects.filter(company__icontains = )中的「./manage.py shell」中手動搜索以使肯定結果實際上是在數據庫 – 2010-10-26 12:00:31

+1

好吧,我嘗試手動搜索「./manage.py外殼」就像你剛剛說的,它的工作正常。 Client.objects.filter(company__icontains =「currys」),返回[] – Shehzad009 2010-10-26 12:26:05