【问题标题】:Django autocomplete search by tag and render Tag ListDjango按标签自动完成搜索并呈现标签列表
【发布时间】:2015-02-18 11:59:04
【问题描述】:

我搜索了自动完成包以实现我的自动完成搜索。但我发现的只是自动完成一个单词。我需要一个单词列表——不只是一个。

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

但是如何实现多标签的搜索呢?自动完成只适用于一个?!还是我理解错了什么?

【问题讨论】:

  • 您可以使用 jquery 自动完成功能,向 Django 发出 Ajax 请求:jqueryui.com/autocomplete
  • 看起来很漂亮。以及如何插入项目列表?!?比如:java javascript erlang
  • 在成功的 ajax 响应中,您将获得检索到的元素的 JSON 列表。用 jQuery 插入它们,例如在你的下拉列表中
  • 好的明白了。以及如何在后端进行ajax?第三方模块还是 REST 和 js 框架?

标签: ajax django search autocomplete django-taggit


【解决方案1】:

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

这是自动完成的工作原理。 例如,每当您在文本框中键入内容时,AJAX 就会运行并返回该特定文本的特定结果。

要获得多个自动完成..

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

【讨论】:

  • 是的,我想到的似乎很漂亮。通过自动完成设置对象列表(因此用户无法键入未设置的关键字)。在输入时将其添加到列表中,完成后加载由这些关键字过滤的视图。在 ember 和一些 Restful api 之类的前端 js_framework 上制作会更好吗?想过美味的派和余烬吗?这不是比 jquery 更好的主意吗?
【解决方案2】:

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。用你的领域或你的必需品替换它

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-18
    • 2012-01-14
    • 2016-07-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多