ModelSerializer

1.减小序列化类代码

2.不需要重写update,create

ser.py

class BookModelSerializer(serializers.ModelSerializer):class Meta:model=Bookfields='__all__' #序列化全部字段# fields=('name','price') # 序列化指定字段# exclude=('name',) # 与fields 不能共用 用于排除某个字段

views.py 书写格式与原来一样,只修改方法名字。

class BooksView2(APIView):def get(self, request):response=MyResponse()books = Book.objects.all()book_ser = BookModelSerializer(books, many=True)  # 序列化多条。 如果一条,不需要写response.data = book_ser.datareturn Response(response.get_dic)def post(self, request):response=MyResponse()# 新增没有instance,只有databook_ser = BookModelSerializer(data=request.data)# 如果没有data=,会报错。第一个参数是instance# book_ser = BookSerializer(request.data)# 校验字段if book_ser.is_valid():book_ser.save()response.data = book_ser.dataelse:response.status = 102response.msg = '新增数据校验失败'response.data = book_ser.datareturn Response(response.get_dic)

高级用法

source

1.可以该字段名

title_name=serializers.CharField(source='title')

2.可以用"."进行跨表

 # 调用 book.publish,直接.publish,所以需要Publish里定义 __str__方法
publish=serializers.CharField()# 可以理解source 隐藏book.字段。publish = serializers.CharField(source='publish.email')

3.可以执行方法

# test为book类里定义的方法
title=serializers.CharField(source='test')

SerializerMethodField()

需要配套方法,方法名叫 get_字段名 返回值就是要显示的东西

  # 需要配套方法,方法名叫 get_字段名 返回值就是要显示的东西authors=serializers.SerializerMethodField()def get_authors(self,instance):# book 对象authors=instance.authors.all()ll=[]for author in authors:ll.append({'name':author.name,'age':author.age})return ll

rest_framework04:ModelSerializer/Serializer高级用法相关推荐

  1. Newtonsoft.Json高级用法

    手机端应用讲究速度快,体验好.刚好手头上的一个项目服务端接口有性能问题,需要进行优化.在接口多次修改中,实体添加了很多字段用于中间计算或者存储,然后最终用Newtonsoft.Json进行序列化返回数 ...

  2. [转]Newtonsoft.Json高级用法

    本文转自:http://www.cnblogs.com/yanweidie/p/4605212.html 手机端应用讲究速度快,体验好.刚好手头上的一个项目服务端接口有性能问题,需要进行优化.在接口多 ...

  3. Alamofire高级用法

    Session 创建自定义Session实例 创建Session一个URLSessionConfiguration SessionDelegate startRequestsImmediately 一 ...

  4. C# Newtonsoft.Json 高级用法

    Newtonsoft.Json介绍: 做Web开发的,没有接触过JavaScript的肯定很少,做前端开发,没有接触过Ajax的估计更不多了.现在的系统大多数是分布式系统,分布式系统就会涉及到数据的传 ...

  5. vim的高级用法配置以及在系统中如何获取帮助

    vim的高级用法配置以及在系统中如何获取帮助 1 vim的三种模式 1.1 使用方法 1.2 vim模式 2 vim工作的基本配置 2.1 临时设定(set设定) 2.2 永久设定方式 3 搜索 4 ...

  6. Cacti Weathermap 高级用法 (二)

    成都长宽Weathermap实际运用的效果图示例: 这是一个CNC出口的质量监控图. 途中cnc节点(红色)是一个展示图例,TEL节点根据存活状态显示为绿色 TEL节点上面P:47.2ms 是一个,这 ...

  7. JAVA正则表达式高级用法(分组与捕获)

    2019独角兽企业重金招聘Python工程师标准>>> 正则表达式在字符串处理中经常使用,关于正则简单的用法相信有一点程序基础的人都懂得一些,这里就不介绍简单基础了.这里主要讲解一下 ...

  8. GUN sed高级用法,sed脚本编写

    这里举一些sed常用的高级用法例子经供参考: 一下操作都针对file.txt文件作修改 [root@QX-××× ~]# cat file.txt libgcc-4.4.7-4.el6.x86_64 ...

  9. java return用法_Java枚举的高级用法之多键值的映射使用

    枚举Enum单映射使用 做Java的各位仁兄姐妹都知道,Java通过HashMap,以及枚举提供了方便的K-V映射功能,例如 枚举单映射使用 但是如果遇到多个键值映射,例如K-K-V的形式怎么办呢?可 ...

最新文章

  1. 禁用页面缓存的几种方法(静态和动态)
  2. PyInstaller将python脚本打包成exe可执行程序
  3. ACE源代码目录结构
  4. Python 2 最后一个版本发布,正式迈入 Python 3 时代
  5. string所有函数详解——史上最全,最贴心
  6. IP地址的简单说明---Linux学习笔记
  7. 在Ubuntu上创建并测试GRE tunnel
  8. android防止左向右滑出程序,Android——ViewPager禁止左右滑动的实现
  9. 最长最短单词(信息学奥赛一本通-T1143)
  10. 数据科学入门与实战:Seaborn001
  11. 全国计算机等级考试贵州大学,贵州计算机等级考试报名入口
  12. the server is not ready for publishing.Please check if the Publishing Tools on the server
  13. MSN蠕虫Myalbum2007.zip专杀工具
  14. python控制电机_如何用Python控制LEGO Wedo 2.0的电机
  15. DBT乳腺切片投影及重建(MATLAB版)
  16. 百度地图自定义大头针图片和添加标注
  17. 微信新动作!加好友解除5000上限,扫码进群开放至200人
  18. 爱快路由器接水星交换机-划分vlan
  19. 解决页面下载文件,资源不存在页面出现空白的问题。
  20. 2019Android高级面试题总结

热门文章

  1. [转]软件测试演义——中高级系列(序)
  2. Linux优化之IO子系统监控与调优
  3. C语言数据结构----递归的应用(斐波拉契数列、汉诺塔、strlen的递归算法)
  4. 希望不要T我~~哈哈...
  5. WPF 基础控件之 DatePicker 样式
  6. 【Blog.Core开源】网关统一集成下游服务文档
  7. 图像处理技术(二)滤波去噪
  8. C# 10 新特性 —— 插值字符串优化
  9. 03Prism WPF 入门实战 - Region
  10. Dapr闪电说 - Dapr落地云原生架构