Json TwitterTypeahead不显示文本,只显示空白下拉列表

Json TwitterTypeahead不显示文本,只显示空白下拉列表,json,django,typeahead.js,Json,Django,Typeahead.js,我的typeahead有问题,键入时会出现建议下拉框,但不会显示任何文本。如果只是一个随机下拉列表,我所做的是键入我知道在我的json文件中的单词,而不是。一旦我输入了不在数据库中的单词,下拉框就会被删除,因此它实际上可以在没有来自json文件的实际文本的情况下工作。另外,在搜索框中键入时,我在python控制台中看到正在进行查询 在这里,您可以看到我在我的json中键入了“数论”,因为您可以看到没有任何文本的下拉列表 我通过使用确保我的json格式正确。为什么文本没有显示在下拉框中 我的看法

我的
typeahead
有问题,键入时会出现建议下拉框,但不会显示任何文本。如果只是一个随机下拉列表,我所做的是键入我知道在我的
json
文件中的单词,而不是。一旦我输入了不在数据库中的单词,下拉框就会被删除,因此它实际上可以在没有来自
json
文件的实际文本的情况下工作。另外,在搜索框中键入时,我在python控制台中看到正在进行查询

在这里,您可以看到我在我的
json
中键入了“数论”,因为您可以看到没有任何文本的下拉列表

我通过使用确保我的
json
格式正确。为什么文本没有显示在下拉框中

我的看法是:

def search_subclasss(request):

    q = request.GET.get('subclass', '')
    sub_classs = SubClasss.objects.filter(subclasss__icontains=q)
    results = []

    for subclasss in sub_classs:

        results.append([subclasss.subclasss, subclasss.subject_id])

    data = json.dumps(results)

    return HttpResponse(data, content_type='application/json')
这是我的html:

    <script type="text/javascript">
        var bestPictures = new Bloodhound({
            datumTokenizer: Bloodhound.tokenizers.obj.whitespace('subclasss'),
            queryTokenizer: Bloodhound.tokenizers.whitespace,

            remote: {
                url: "{% url 'search_subclasss' %}?subclass=%QUERY",
                //url: '/search_subclasss/?subclass=%QUERY',
                wildcard: '%QUERY'
            }
        });

        $('#remote .typeahead').typeahead(null, {
            name: 'subclasss',
            display: 'subclasss',
            limit: 10,
            source: bestPictures
        });
    </script>

在执行筛选后,我创建了一个python字典
dict\u子类
,解决了我自己的问题。之后,我只需将每个
dict_子类
附加到
结果
数组中。现在我可以从视图向模板发送
json

def search_subclasss(request):
    q = request.GET.get('subclass', '')
    sub_classs = SubClasss.objects.filter(subclasss__icontains=q)
    results = []

    for subclasss in sub_classs:
        dict_subclass = {
            'subject': subclasss.subject_id,
            'subclasss': subclasss.subclasss,
        }
       results.append(dict_subclass)

    data = json.dumps(results)

    return HttpResponse(data, content_type='application/json')
我从中得到了什么?twitter typeahead在接收其
json
格式方面非常有选择性

上面的代码将为您提供一个类似这样的
json
JavaScript
typeahead
可以正确解释:

[{"subject": "AGR", "subclasss": "Agroecology"}, {"subject": "AGR", "subclasss": "Agronomy"},...,{"subject": "TR", "subclasss": "Operations research"}, {"subject": "TR", "subclasss": "Mass transit"}]
我之前做的是
results.append([subclass.subclass,subclass.subject\u id])
,它给出了
json
结果:

[["Agroecology", "AGR"], ["Agronomy", "AGR"],...,["Operations research", "TR"], ["Mass transit", "TR"]]
虽然两者都是正确的
json
格式,
一样重要,并且需要指定将显示并用于执行查询匹配的搜索字段

[{"subject": "AGR", "subclasss": "Agroecology"}, {"subject": "AGR", "subclasss": "Agronomy"},...,{"subject": "TR", "subclasss": "Operations research"}, {"subject": "TR", "subclasss": "Mass transit"}]
[["Agroecology", "AGR"], ["Agronomy", "AGR"],...,["Operations research", "TR"], ["Mass transit", "TR"]]