2014-08-28 50 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