zoukankan      html  css  js  c++  java
  • 关于Django的序列化问题。serializers

      在DRF框架里,ModelSerializers是一个重要的组件。大大的帮组我们节省了数据序列化的过程,真的可以说是良心产品。接手的这个项目用的Django,前人的代码都是手动序列化的,为了保证风格的一致性我续写的代码也都是手动序列化。后来遇到一个问题:有个接口的查询结果是querySet里的数据有几千条,而且需要一次性返回,不能做分页处理。这一下几千条的遍历确实是耗费时间的,由此导致了接口的访问速度过慢。因此想到看有没有官方优化的序列化功能能来解决这个瓶颈。在某度忙活了好久,查询到的都是关于DRF框架的ModelSerializers。仔细遍历完了各个文章,还是找到了一些关于Django serializers的信息。整理如下:

      

    from django.core import serializers
    
    order_infos =Order.objects.filter(number=_number,name =_name)
    #第一个参数为转化为的数据格式,第二个参数是queryset对象。(必须是queryset对象,不能是查询后的列表。不然会报错 'dict' object has no attribute '_meta') 。
    json_data = serializers.serialize('json', order_infos)

      下面是列举的一些支持序列化的数据格式:

        xml        类似与前端html格式的一种数据格式,用于传输和记录

        yaml        也是一种数据格式,和json很像,可是没有双引号,可读性较强。感兴趣的小伙伴自习某度

        json        这个就不说了,写接口的接触的最多。。。(多到想吐)

    完成操作以后的感觉:

      真特娘的慢,第二个参数是queryset,他序列的时候会把所有的字段都给你序列化出来(暂时是没有找到指定字段序列化的方法),一点没有ModelSerializers那么贴心。点开源码进去一瞅,也是用for循环来遍历的,而且操作的字段更多了,比手动序列化更费时间。到此为止,此路GG,另求他法吧,老子去也!!!!

  • 相关阅读:
    django之表多对多查询
    Django之ORMselect_related和prefetch_related
    django中用户登入时初始化session中保存的数据
    django中间件判断用户有无权限访问当前的url
    django中自定议rbac权限model类
    django中的inclusion_tag配置和实现
    docker命令
    JS设置cookie、读取cookie、删除cookie
    MySQL Community Downloads
    44个CSS3制作的形状图形
  • 原文地址:https://www.cnblogs.com/ppzhang/p/10071956.html
Copyright © 2011-2022 走看看