使用Django数据库/模型的jQuery自动完成插件

时间:2011-02-12 21:12:36

标签: jquery django jquery-autocomplete

有人知道如何使用数据库而不是本地值来实现Django中的jQuery autocomplete plugin吗?

具体来说,我想实现页面底部提到的“搜索页面替换”功能,数据集将有大约一千个或更多条目,但我无法锻炼如何让它与我的数据库的必要字段进行交互

(我也在寻找一个用于我网站的优秀Python / Django搜索解决方案 - 这只是一个非常简单的网站。)


感谢您的帮助。

1 个答案:

答案 0 :(得分:11)

我用一个模型用jQuery.autocomplete做了一些事情。

当用户开始写名字时,

搜索城市的功能:

根据jqueryui docs使自动完成工作需要输入如下:

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

所以,我的模板中用于将lib附加到此输入的javascript看起来像:

$(document).ready(function(){
     $( "input#n" ).autocomplete({
                            source: "{% url autocomplete_city %}",
                            minLength: 2
        });
});

要解析该网址,您必须在urls.py

中写下这样的内容
urlpatterns = patterns('cities.views',
    url(r'^autocomplete_city/$', 'autocomplete_city', name='autocomplete_city'),
)

这意味着我有类似cities.views.autocomplete_city的观点:

def autocomplete_city(request):
    term = request.GET.get('term') #jquery-ui.autocomplete parameter
    cities = City.objects.filter(name__istartswith=term) #lookup for a city
    res = []
    for c in cities:
         #make dict with the metadatas that jquery-ui.autocomple needs (the documentation is your friend)
         dict = {'id':c.id, 'label':c.__unicode__(), 'value':c.__unicode__()}
         res.append(dict)
    return HttpResponse(simplejson.dumps(res))
你还需要什么?开始测试并记住文件是你的朋友请尝试先为自己制作东西,谷歌,阅读文档,尝试3次,如果不能,stackoverflow是你的朋友。