ValueError: Cannot use None as a query value django ajax
ValueError: Cannot use None as a query value django ajax
我想通过 Ajax 调用显示带有数据响应的下拉列表。一切正常,但我收到此 ValueError: Cannot use None as a query value
错误。
查看:
def load_brand(request):
if request.is_ajax():
term = request.GET.get('term')
brand = Brand.objects.all().filter(brand__icontains=term)
return JsonResponse(list(brand.values()), safe=False)
ajax:
$('#id_brand').select2({
ajax: {
url: '/brand/ajax/load-brand/',
dataType: 'json',
processResults: function (data) {
return {
results: $.map(data, function (item) {
return {id: item.id, text: item.brand};
})
};
}
},
minimumInputLength: 1
});
在你的 ajax 调用中你没有发送 data
即:哪个用户在 select2 中输入并且你正在访问它们即:request.GET.get('term')
这是空的所以你的 .filter(brand__icontains=term)
给你错误,因为 term
值为空。
您也可以在 ajax 调用中添加以下内容 :
$('#id_brand').select2({
ajax: {
url: '/brand/ajax/load-brand/',
dataType: 'json',
data: function(params) {
var query = {
term: params.term, //this will be paass
type: 'public' //optional..
}
// Query parameters will be ?term=[values]&type=public
return query;
},
processResults: function(data) {
return {
results: $.map(data, function(item) {
return {
id: item.id,
text: item.brand
};
})
};
}
},
minimumInputLength: 1
});
此外,在您的服务器端,您可以检查 term
是否有任何值,即:
if term:
brand = Brand.objects.all().filter(brand__icontains=term)
更多信息请查看this
我想通过 Ajax 调用显示带有数据响应的下拉列表。一切正常,但我收到此 ValueError: Cannot use None as a query value
错误。
查看:
def load_brand(request):
if request.is_ajax():
term = request.GET.get('term')
brand = Brand.objects.all().filter(brand__icontains=term)
return JsonResponse(list(brand.values()), safe=False)
ajax:
$('#id_brand').select2({
ajax: {
url: '/brand/ajax/load-brand/',
dataType: 'json',
processResults: function (data) {
return {
results: $.map(data, function (item) {
return {id: item.id, text: item.brand};
})
};
}
},
minimumInputLength: 1
});
在你的 ajax 调用中你没有发送 data
即:哪个用户在 select2 中输入并且你正在访问它们即:request.GET.get('term')
这是空的所以你的 .filter(brand__icontains=term)
给你错误,因为 term
值为空。
您也可以在 ajax 调用中添加以下内容 :
$('#id_brand').select2({
ajax: {
url: '/brand/ajax/load-brand/',
dataType: 'json',
data: function(params) {
var query = {
term: params.term, //this will be paass
type: 'public' //optional..
}
// Query parameters will be ?term=[values]&type=public
return query;
},
processResults: function(data) {
return {
results: $.map(data, function(item) {
return {
id: item.id,
text: item.brand
};
})
};
}
},
minimumInputLength: 1
});
此外,在您的服务器端,您可以检查 term
是否有任何值,即:
if term:
brand = Brand.objects.all().filter(brand__icontains=term)
更多信息请查看this