QuerySet转JSON的使用方法——django级联下拉列表select option用得到

queryset转JSON的使用方法

原理:
  1,queryset类型的读取方式与字典类似,但并非字典,它内部的值都是OBJECT对象。那么JSON是无法序列化对象的。
  2,利用values()和values_list()方法,将queryset转换成字典和列表形式的存储方式。PS:这样还不行,还有一步要做。
  3,再将转换完的queryset转换成list列表。 注意:上面的转换不是转换成字典或列表,而是字典和列表的数据存储形式。
  4,这样,通过JsonResponse就可以序列化了,重要一点:必须加入safe=False 参数。(因为咱们序列化的是一个列表)
  (解释 safe :这个参数被设置为:False ,那data可以填入任何能被转换为JSON格式的对象,比如list, tuple, set。 默认的safe 参数是 True. 如果你传入的data数据类型不是字典类型,那么它就会抛出 TypeError的异常。)

视图函数中部分代码:

  if request.is_ajax():
    id = request.GET.get('id')
    article_list = Article.objects.values().filter(user__department__pk=id)#queryset不能json序列化,是因为queryset中是对象obj.需要转换成字典
    ret_list = list(article_list)
         return JsonResponse(ret_list, safe=False)

前端AJAX中的代码:
复制代码

<script>
  $('.showlist').click(function () {
    $.ajax({
      url:"",
      type:'get',
      data:{
        id:$(this).val(),
        },
      success:function (data) {

        console.log(data[0]['nid'])  
        }
     })
  })
</script>
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值