JQuery 自动完成不会呈现结果

安德鲁·萨尔茨

试图得到一个下拉!

模型:

class Student(models.Model):
    name = models.CharField(max_length=100)
    student_id = models.IntegerField()
    grade = models.IntegerField()

看法:

def student_autocomplete(request):
    query = request.GET.get('term')
    if query:
        data = (Student.objects.filter(name__startswith = query).values('name', 'student_id', 'grade'))
        return JsonResponse(list(data), safe=False)
    else:
        data='blank'
        return JsonResponse(data)

查询:

$(document).ready(function() {
        console.log('ready!');
    });

    $("#student_auto").autocomplete({
    source: "{% url 'student-autocomplete' %}",
    minLength: 2,
    autoFocus: true,
    select: function (event, ui) {
        $('#student_auto').val( ui.item.name );
        console.log(ui, event);
    }
    });
    $("#student_auto").removeAttr("autocomplete").attr("autocomplete", "on");

当我手动调用自动完成 url 时,我可以看到数据,它看起来不错,但结果仅显示为空框。

安德鲁·萨尔茨

不要成为笨蛋 - 阅读文档

具有标签和值属性的对象数组:[ { label: "Choice1", value: "value1" }, ... ]

这导致:

def student_autocomplete(request):
    query = request.GET.get('term')
    results = []
    if query:
        data = Student.objects.filter(name__startswith = query).values()
        for d in data:
            d_json = {}
            d_json['value'] = d['name']
            d_json['id'] = d['student_id']
            results.append(d_json)
        return JsonResponse(results, safe=False)
    else:
        data ='blank'
    return JsonResponse(data)

对于其他卡住的人:您要自动完成的值应标记为 value您可以通过 调用任何其他值ui.item

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章