从自动完成搜索表单访问数据

约翰·昂斯洛特

我的自动完成表格工作正常,即。它可以正确完成数据。现在,我希望该数据可访问->将我链接到有效的网址。我试图让它自己工作,但是我碰壁了。

有人可以给我一个提示或链接作为工作示例。感谢您的时间。

views.py

def paper_autocompleate(request):
    if request.is_ajax():
        q = request.GET.get('term', '')
        autoPaperwork = Paperwork.objects.filter(
    Q(title__icontains=q) | Q(description__icontains=q))[:10]
        results = []
        for p in autoPaperwork:
            p_json = {}
            p_json = p.title
            results.append(p_json)
        data = json.dumps(results)
    else:
        data = 'fail'
    mimetype = 'application/json'
    return HttpResponse(data, mimetype)

urls.py

urlpatterns = patterns('', 
    url(r'^api/paper_autocompleate/', 'papers.views.paper_autocompleate', name='paper_autocompleate')
)

JQAuto.js

$(function() {
  $("#autoPaperwork").autocomplete({
    source: "/api/paper_autocompleate/",
    minLength: 2,
  });
});

index.html

<div class="ui-widget">
    <input id="autoPaperwork">
</div>
warath编码器

尚未测试,但我认为您需要这样做:

def paper_autocompleate(request):
if request.is_ajax():
    q = request.GET.get('term', '')
    autoPaperwork = Paperwork.objects.filter(
Q(title__icontains=q) | Q(description__icontains=q))[:10]
    results = []
    for p in autoPaperwork:
        results.append(p.title)
    data = json.dumps(results)
else:
    data = 'fail'
mimetype = 'application/json'
return HttpResponse(data, content-type=mimetype)

不知道您p_json在做什么,但是我的JQuery-UI自动完成功能是通过jsut的简单json列表工作的

["result 1", "result 2"]

我通过使用得到 json.dumps(<python_list_object>)

编辑:这是我对任何数据库对象字段进行通用自动排序的代码

obj = apps.get_model(app_label=app_name, model_name=model_name)
#obj = locate('LessonApp.models.%s' % otype) # old way of locating
try:
    search_list = list(obj.objects.\
                       exclude(Q(**{field: ''}) | Q(**{'{0}__isnull'.format(field): True})).\
                       values_list(field, flat=True).distinct().order_by(field))
    if q:
        search_list = filter(lambda s: s[:len(q)].lower() == q.lower(), search_list)  # search the list for q, ignore case
    return HttpResponse(json.dumps(search_list), content_type='application/json')
except Exception as ex:
    return HttpResponse('{"result": "error", "error": "DB Error\n%s"}' % ex, content_type='application/json')

编辑:这是我的JavaScript来调用我的输入

$('#id_group_name').autocomplete({
            source: "/autocomplete/cec_cms/CmsNews/group_name",
            minLength: 0,
            delay: 500 //default is 300
        }).focus(function() {
            $(this).autocomplete('search', $(this).val());
        });

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章