zoukankan      html  css  js  c++  java
  • 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是用来解决视图可以进行跨域请求。

  • 相关阅读:
    路由器欺骗(原始套接字五)
    ICMP拒绝服务攻击(原始套接字系列四)
    ping的实现(原始套接字系列三)
    原始套接字基础(原始套接字系列二)
    原始套接字简介(原始套接字系列一)
    MMS服务学习
    转 Qt 翻译
    为应用程序设置一个图标 (窗口左上角 程序图标)
    正则表达式
    《TCP/IP详解 卷1:协议》第4章 ARP:地址解析协议
  • 原文地址:https://www.cnblogs.com/zzsy/p/12347187.html
Copyright © 2011-2022 走看看