Django按标签自动完成搜索并渲染标签列表

时间:2014-12-19 14:19:46

标签: ajax django search autocomplete django-taggit

我搜索了自动完成包以实现我的自动完成搜索。但我发现的所有内容都是自动填充一个词。我需要一个单词列表 - 而不仅仅是一个单词。

它应该像堆栈标记输入一样。用户开始输入 - 如果有设置,则选择标签。根据需要插入尽可能多的标签,并且当他完成时,整个标签列表应该呈现由具有taggit的那些标签过滤的List。

但是如何实现搜索许多标签?自动填充仅适用于一个?!还是我明白了一些严重的错误?

2 个答案:

答案 0 :(得分:1)

jQueryUI部分:

$("#id_of_your_input").keypress(function(){
    $(this).autocomplete({
        source: $(this).data('url'), ## or hard code it: source: '/api/...'
        minLength: 2,
        delay:300,
        select: function(event, ui) {
            $('#id_of_your_drop_down').val(ui.item.value);
        }
    });
});

处理$(this).data('url')的视图:

import json

NUMBER_OF_RESULTS = 5

def view_for_your_api(request):
    if not request.is_ajax():
        return HttpResponse('false')
    results = model.objects.all()[:NUMBER_OF_RESULTS]
    data = json.dumps([{'label': r.name, 'value': r.name} for r in results])
    return HttpResponse(data, 'application/json')

我假设你的模型中有r.name。将其替换为您的领域或您的需要

答案 1 :(得分:0)

这是一个好主意“获取多个自动填充建议”。

以下是自动填充的工作原理。 例如,无论何时在文本框中键入内容,AJAX都会运行并返回特定文本的特定结果。

获得多个自动填充..

如果要执行多个自动完成,则需要根据重复出现的情况在列中保存多个数据或标记。或者在数据库中建立“*一对多关系”并返回所有这些值。