如何将标签和值的字典传递到jQuery自动完成
我试图将标签和值的字典传递到我的模板中,这样我就可以在jQuery中的一个字段上使用自动完成功能。问题是我的字典没有被正确地传进来 我有一个Django模型如何将标签和值的字典传递到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
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中更改它们。