DJango之model_to_dict


導包:from django.forms import model_to_dict

作用:將queryset類型數據轉換成字典

 def get(self, request, *args, **kwargs):
        pk = kwargs.get('pk')
        print(request.GET.dict())   
        if pk:
            que = model_to_dict(Goods.objects.get(id=pk))
            print(que)             #{'id': 1, 'title': '女朋友', 'num': 1, 'price': Decimal('23.56'), 'desc': '注意腎虛'}
            return JsonResponse(que)

將查詢出來的jquery對象變成字典, 方便使用json序列化

這里我為什么寫request.GET.dict() 這是因為容易搞混queryset類型和querydict類型數據。

queryset都是從模型對象中獲取的數據。

當獲取request.GET和request.POST的數據,他們是querydict類型,他們可以用dict()方法。直接將query.dict轉換成dict類型數據。request.GET.dict(),get請求拼接?gg=1當使用dict方法后 獲取字典 {'gg': '1'},POST的表單請求也是一樣

將queryset類型數據轉換成字典方法二

__dict__方法

示例代碼:

  def get(self, request, *args, **kwargs):
  
        pk = kwargs.get('pk')
        print(request.GET.dict())
        if pk:
            queryset =Goods.objects.get(id=pk).__dict__
            print(queryset)   #獲取數據{'_state': <django.db.models.base.ModelState object at 0x0000020B161DD4A8>, 'id': 1, 'title': '女朋友', 'num': 1, 'price': Decimal('23.56'), 'desc': '注意腎虛'}  但他有一個私密屬性,咱們需要給他pop刪除,即可
            
            queryset.pop("_state")
            print(queryset)    #{'id': 1, 'title': '女朋友', 'num': 1, 'price': Decimal('23.56'), 'desc': '注意腎虛'}
           
           return JsonResponse(queryset)

這種方法優點就是寫法簡單,容易理解,代碼量還少

但會發現多了個沒用的_state字段,同時當你有外鍵字段和ManyToManyField字段的數據,且不能按需顯示輸出,當我只需要其中幾個字段時會有大量冗余數據,不建議使用

QueryDict對象

scrf_exempt是用來解決視圖可以進行跨域請求。


免責聲明!

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



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