ValueError:不能使用 None 作为查询值 django ajax

Posted

技术标签:

【中文标题】ValueError:不能使用 None 作为查询值 django ajax【英文标题】:ValueError: Cannot use None as a query value django ajax 【发布时间】:2021-08-16 06:42:19 【问题描述】:

我想通过 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
  );

【问题讨论】:

【参考方案1】:

在您的 ajax 调用中,您没有发送 data 即:哪个用户在 select2 中输入并且您正在访问它们,即:request.GET.get('term') 这是空的,所以您的 .filter(brand__icontains=term) 给您错误,因为 term 值为 null .

相反,您也可以在 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

【讨论】:

以上是关于ValueError:不能使用 None 作为查询值 django ajax的主要内容,如果未能解决你的问题,请参考以下文章

已修复Error: ValueError: The last dimension of the inputs to `Dense` should be defined. Found `None`

已修复Error: ValueError: The last dimension of the inputs to `Dense` should be defined. Found `None`

Colab 中的 TensorFlow 错误 - ValueError: Shapes (None, 1) 和 (None, 10) 不兼容

ValueError:形状 (None, 1) 和 (None, 2) 不兼容

ValueError:logits 和标签必须具有相同的形状 ((None, 4) vs (None, 1))

ValueError:logits 和标签必须具有相同的形状 ((None, 23, 23, 1) vs (None, 1))