场景描述:

以前用序列化做比较简单的传递需要展示的数据,现在需要在一个序列化里面嵌套另外一个序列化。试一下serializer更多的玩法

  • 业务逻辑基本介绍:
    房间与车位间一对多关系,车位与房间存在外键关联,现在查询房间,需要将与房间关联的车位的详细信息一起返回前端

主要思路:

  • 实现两个两个序列化,一个主要序列化 room 信息,一个主要序列化 parking (车位)
  • 先将初始的结果集传递进serializer,然后通过SerializerMethod来实现嵌套序列化

主要矛盾:

在SerialzierMethod实现序列化的时候,怎么将相关的值传递进来.(举例子,这里)

    def get_parkings(self, obj):# 想想obj是啥park = Parking.objects.filter(room=obj.id)return ParklingSer(park, many=True).datadef get_effective_time(self, obj):date = obj.effective_timereturn date.strftime("%Y-%m-%d")

这时候就有几个地方捋清楚了:

class RoomPropertySer(serializers.ModelSerializer):effective_time = serializers.SerializerMethodField()parkings = serializers.SerializerMethodField()is_expired = serializers.SerializerMethodField()...
    class Meta:model = Roomfields = ('name', 'uuid', 'base_property_fee','base_elevator_fee','payment_of_last_time', 'effective_time', 'is_expired','property_fee_time_limit', 'parking_sever_fee_time_limit','parking_leasing_fee_time_limit', 'parkings')
  • 这几个地方的具体作用是了解serializer比较重要的地方

开始分析

我会将我的想法以及打印出来的结果和大家一起分享…

第一部分:

回到第一部分的代码中,obj是个啥?

打印出来看下:

<class ‘community.models.Room’>

这样就很好处理了,因为车位的信息,需要通过房间的id来获取,重新格式化时间输出的格式也需要原本的时间数据,代码就是这么写的

看起来很简单吗,没有更难的了吗

当然,以上是最简单的。主要原因是传递进来的是一个对象,需要的数据obj都有了,想想如果传递进来的是纯的字典类型数据,情况会这样?
这个下一节继续…

扩展:

  • fields在这里是干嘛的

用来规定能传递出去,需要序列化的数据
而SerialzierMethod相当于自定义了需要传递出去的字段,然后将它放进fields里,就能传递出去了

serializer嵌套序列化相关推荐

  1. drf serializer 的序列化

    drf serializer 的序列化 文章目录 drf serializer 的序列化 1.序列化类 常用字段类 及字段参数 1.1.常用字段类 1.2.常用字段参数 2. 序列化类高级用法之sou ...

  2. php嵌套序列化输出tp5.0,ThinkPHP v5.0.x 反序列化利用链挖掘

    前言 前几天审计某cms基于ThinkPHP5.0.24开发,反序列化没有可以较好的利用链,这里分享下挖掘ThinkPHP5.0.24反序列化利用链过程.该POP实现任意文件内容写入,达到getshe ...

  3. Serializer序列化使用

    在django shell中来学习序列化器的使用. python manage.py shell 1 基本使用 1) 先查询出一个图书对象 from booktest.models import Bo ...

  4. Django REST Framework教程(4): 玩转序列化器(Serializer)

    在前面的文章中我们以博客为例,自定义了一个简单的 ArticleSerializer 类, 并分别以函数视图(FBV)和基于类的视图(CBV)编写了博客文章列表资源和单篇文章资源的API,支持客户端以 ...

  5. Serializer序列化的使用

    序列化使用 我们在django shell中来学习序列化器的使用. python manage.py shell 1 基本使用 1) 先查询出一个图书对象 from booktest.models i ...

  6. djangorestframework源码分析2:serializer序列化数据的执行流程

    djangorestframework源码分析 本文环境python3.5.2,djangorestframework (3.5.1)系列 djangorestframework源码分析-serial ...

  7. 【序列化类Serializer】

    文章目录 序列化类Serializer的使用 序列化类常用字段和字段参数 选项参数 通用参数 字段参数针对性分类 通用参数 序列化类Serializer的使用 序列化和反序列化 序列化:把我们的数据, ...

  8. Django REST framework API 指南(11):序列化·关系

    官方原文链接 本系列文章 github 地址 转载请注明出处 Serializer 关系 关系字段用于表示模型关系. 它们可以应用于 ForeignKey,ManyToManyField 和 OneT ...

  9. formdata 嵌套_角度7 FormData+文件+嵌套对象

    我有一个django后端和angular 7 frontend,在发送带有参数和文件的formdata时一切正常,但是当我尝试发送嵌套的json时,它是空的.嵌套的json用于我的对象中的嵌套序列化程 ...

  10. drf3 Serializers 序列化组件

    为什么要用序列化组件 做前后端分离的项目,我们前后端交互一般都选择JSON数据格式,JSON是一个轻量级的数据交互格式. 给前端数据的时候都要转成json格式,那就需要对从数据库拿到的数据进行序列化. ...

最新文章

  1. Linux 用户进程内存空间详解
  2. 水杯测试----误人子弟啊!
  3. 获得最新纪录 sql
  4. 手机调用系统的拍照和裁剪功能,假设界面有输入框EditText,在一些手机会出现点击EditText会弹出输入法,却不能输入的情况。...
  5. mac idea命令精简使用版常用指令
  6. linux ssh 双机互信
  7. 怎样批量修改图片尺寸?
  8. OpenNLP 命令行
  9. app标签栏android,Android Navigation TabBar控件实现多彩标签栏
  10. 纯HTML标签详解(摘自阿里西西)
  11. Python基础笔记_Day10_Python面向对象、类和对象、__init__、__str__、访问限制、set、get
  12. 朱子治家格言(清朝·朱柏庐)
  13. 2021-09-02牛客网每日10题--前端
  14. 未来 3 年,什么样的技术人,最有机会年赚 100万?
  15. Ubuntu 12.04 常用三种输入法及键盘错乱的调整
  16. 1906: 鹊桥相会
  17. 机械学习基础以及在pynq-Z2上部署Faster-RCNN的项目学习3
  18. SAP CDS 开发和Fiori App生成学习笔记
  19. vue uniapp 动态设置页面背景图
  20. 把数字金额转换成中文大写数字

热门文章

  1. 练习4-11 统计素数并求和
  2. linux系统下CPU利用率的计算
  3. Flutter String 常用方法
  4. Windows下 DirectX SDK 配置检验
  5. 下载网页中的视频的两种方法
  6. 仓库管理软件 v1.0 绿色破解版
  7. 经典的战略管理和营销管理书《定位》
  8. 发明,还是发现?数学本质的哲学之辩
  9. 计算机文化基础简答题
  10. 聚类算法的原理是什么?