ValueError:不能将None用作查询值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)

有关更多信息,请查看此

最新更新