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的異常。)

 

視圖函數中部分代碼:

 1 if request.is_ajax():
 2   id = request.GET.get('id')
 3   article_list = Article.objects.values().filter(user__department__pk=id)#queryset不能json序列化,是因為queryset中是對象obj.需要轉換成字典
 4   ret_list = list(article_list)
 5 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>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM