Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将标签和值的字典传递到jQuery自动完成_Jquery_Django_Django Models_Django Views_Jquery Ui Autocomplete - Fatal编程技术网

如何将标签和值的字典传递到jQuery自动完成

如何将标签和值的字典传递到jQuery自动完成,jquery,django,django-models,django-views,jquery-ui-autocomplete,Jquery,Django,Django Models,Django Views,Jquery Ui Autocomplete,我试图将标签和值的字典传递到我的模板中,这样我就可以在jQuery中的一个字段上使用自动完成功能。问题是我的字典没有被正确地传进来 我有一个Django模型Question,它有一个问题(标签)和一个slug(值)。我想将这两个问题都传递到我的模板中,这样当有人单击问题文本时,我可以将他们重定向到该问题的url/slug Question.html <input id="search-bar" name="question" type="t

我试图将标签和值的字典传递到我的模板中,这样我就可以在jQuery中的一个字段上使用自动完成功能。问题是我的字典没有被正确地传进来

我有一个Django模型
Question
,它有一个问题(标签)和一个slug(值)。我想将这两个问题都传递到我的模板中,这样当有人单击问题文本时,我可以将他们重定向到该问题的url/slug

Question.html

<input id="search-bar" name="question" type="text" class="form-control" placeholder="Find your next question..." aria-label="Find your next question...">

<div class="input-group-append">
    <button id="search-question-button" class="btn" type="submit">Search</button>
</div>

<script>
    $(function () {
        $("[name='question']").autocomplete({
            source: "{% url 'questions' slug=question.slug %}",
            select: function (event, ui) {
                window.location.href = ui.item.value;
                console.log(ui.item);
                
            }
        });
    });
</script>
在我的django项目控制台中,我正在打印这本词典,它似乎正确地打印了
{'question':“诸如此类”,“slug':“诸如此类”}

然而,当我使用chrome检查我的站点时,我发现标签和值是相同的,并且我的字典没有正确传递

编辑:

现在我传入一个查询集列表:

视图.py

if 'term' in request.GET:
    qs = current_questions.filter(question__istartswith=request.GET.get('term'))
    qs_dict = dict()

    for question in qs:
        qs_dict['label'] = question.question
        qs_dict['value'] = question.slug
    print(qs_dict)

    return JsonResponse(qs_dict, safe=False)
if 'term' in request.GET:
    qs = current_questions.filter(question__istartswith=request.GET.get('term'))
    qs_list = []

    for question in qs:
        qs_list.append(qs.values('question', 'slug'))

    return JsonResponse(qs_list, safe=False)
但是我得到了错误
TypeError:QuerySet类型的对象不是JSON可序列化的


另外,这是否意味着我必须将我的键从'question'和'slug'更改为'label'和'value'?

Autocomplete需要一个对象数组:
[{“label”:“Apple”,“value”:“seed”},{“label”:“Peach”,“value”:“pit”}]
因此,如果您只传回一个对象,它将抛出一个错误。这很有意义,谢谢。请看一下我所做的编辑。您不需要更改键,但如果可以,它将非常有用。Autocomplete不会查找这些键,因此您必须在py或js中更改它们。