序列化:将变量从内存中存储或传输的过程称之为序列化

1、序列化组件是干什么用的?

  对应着表,写序列化的类

2、如何使用序列化组件
  Serializer
    1) 重命名:用source:xx = serializers.CharField(source='name')
    2) 取出出版社名字:

from rest_framework import serializers 
  方式一:
    # 在模型表中重写__str__方法:
publish=serializers.CharField()   方式二:
    # 用source,例:拿出出版社的城市         
publish=serializers.CharField(source='publish.city')

如果不指定source,字段必须对应起来,如果指定了source,字段可以任意命名

    3)使用:

      实例化产生一个对象(传参数)
      对象.data ---》拿到字典

3、(其他)source:可以指定字段,也可也指定方法

# publish.test这是个方法,会执行该方法,并拿到返回结果
test = serializers.CharField(source='publish.test')

必须要写一个方法预制对应
  get_字段名(self,obj对象)
    # 写一些逻辑
    # 也可以用序列化的类,继续序列化别的对象
    return ''

3、 SerializerMethodField,可以指定一个方法

publish=serializers.SerializerMethodField()
# 方法名:叫get_字段名,要传参数,参数是:当前book对象
def get_publish(self,obj):
# obj 是当前book对象
dic={'name':obj.publish.name,'email':obj.publish.email}
return dic

方法内部可以继续用其他的序列化类

4、ModelSerializer:定义一个类,必须在类中写

class Meta:
model=指定表
# fields = '__all__'
# 指定只取这两个字段
fields = ['nid','name']
# 去掉指定的字段
# exclude=['publish','authors']
# fields,跟exclude不能连用
# 指定深度,就是跨几个表(官方建议小于10,我给你的建议小于3)
# depth = 2

  5、实例化传参数的时候,可以按关键字传:

BookSerializer(instance='可以是queryset对象,也可以是单个对象',many=True/False)


最新文章

  1. Arch Linux 安装博通 BCM4360 驱动(Arch Linux, Ubuntu, Debian, Fedora...)
  2. Android PopupWindow的使用和分析
  3. json注意:
  4. 手工加载DLL
  5. 屏蔽input导致的回车提交事件
  6. 一个非常简单的RPC服务
  7. Axure母版
  8. 各种边框样式。。本以为border不是这么用的。
  9. opencv china 网站,好1376472449
  10. 数据库范式(1NF 2NF 3NF BCNF)
  11. hibernate的运行流程
  12. Eclipse配置Hadoop开发环境
  13. 一个项目经理对主流项目管理工具的对比:禅道VS华为软件开发云
  14. css边框小结
  15. vuex直接修改state 与 用dispatch/commit来修改state的差异
  16. awk词频统计功能
  17. Eclipse + Maven 安装配置
  18. OpenCV实现SfM(三):多目三维重建
  19. Web开发框架趋势
  20. hdu2295-Radar

热门文章

  1. 「 Luogu P2230 」X 「 Vijos 1142 」 HXOS系统
  2. C#创建excel并释放资源
  3. saturne installation on Ubuntu
  4. Swift 对象创建(PUT Object)过程详解——基于副本策略(一)
  5. [K/3Cloud] KSQL日期常量用法注意
  6. Choose and divide
  7. [codevs 1482]路线统计(矩阵乘法)
  8. js有块级作用域么?
  9. Docker创建PHP镜像
  10. svn: 命令行上传多个指定文件