2014-08-28 88 views
0

我想使用jquery-ui自動完成插件與我的模型。 我有這樣的模式:Django jquery-ui自動完成與數據庫

class Baslik(models.Model): 
    user = models.ForeignKey(User, null=True, blank=True) 
    title = models.CharField(max_length=50) 
    timestamp = models.DateTimeField(auto_now_add=True, auto_now=False) 
    updated = models.DateTimeField(auto_now_add=False, auto_now=True) 
    active = models.BooleanField(default=True) 

爲了讓這個做我用下面的代碼: 輸入:

<input id="n" type="text" name="n"/> 

JS:

<script> 
$(document).ready(function(){ 
    $("input#n").autocomplete({ 
          source: "{% url "autoco" %}", 
          minLength: 2 
     }); 
}); 
</script> 

觀點:

def autoco(request): 
    term = request.GET.get('term') 
    bslk = Baslik.objects.filter(title__istartswith=term) 
    res = [] 
    for b in bslk: 
      dict = {'id':b.id, 'label':b.__unicode__(), 'value':b.__unicode__()} 
      res.append(dict) 
    return HttpResponse(simplejson.dumps(res)) 

url:

url(r'^autoco/$', 'autoco', name='autoco'), 

但它仍然不起作用。當我只是在js代碼中使用本地值時,它工作正常,但在這種情況下,我無法獲得任何自動完成。當我鍵入輸入內容時,終端會顯示一個如"GET /autoco/?term=se HTTP/1.1" 500 9892的日誌我做錯了什麼。任何意見都會有幫助。謝謝。

+0

請查看瀏覽器開發工具中的網絡選項卡,並顯示Ajax請求的回溯。或者,直接在瀏覽器中轉到「/ autoco /?term = se」以查看那裏的回溯。 – 2014-08-28 17:13:32

+0

當我轉到「/ autoco /?term = se」時,它說'TypeError at/autoco/ 'str'object is not callable' – malisit 2014-08-28 17:48:33

+0

回溯的* rest *是什麼? – 2014-08-28 17:55:03

回答

0

問題出在你的urls.py中。您不能像字符串'autoco'那樣引用視圖。或者將其稱爲'myapp.views.autoco',或導入實際視圖功能,並將其直接引用爲autoco而不帶引號。

+0

現在它說'NameError at/autoco/ 全球名'simplejson'沒有定義'是否有機會知道這個原因呢? – malisit 2014-08-28 18:42:20

+0

你是否已經在你的views.py中導入了simplejson? – 2014-08-28 19:04:42

+0

我用'import json'。我想這不是必需的進口。我試過'import django.utils.simplejson'。它沒有工作。編輯:我用'從django.utils導入simplejson'和它的工作。非常感謝。 – malisit 2014-08-28 19:09:14