序列化高级用法之source,序列化高级用法之定制字段的两种方式,多表关联反序列化保存,反序列化字段校验其他,ModelSerializer使用
1|0序列化高级用法之source:
1|1 source的用法:
1 修改前端看到的字段key值---》source指定的必须是对象的属性:
前端展示效果:
2. 修改前端看到的value值,---》source指定的必须是对象的方法
models中:
序列化类中:
前端展示的效果:
3.可以关联查询(得有关联关系)
2|0 序列化高级用法之定制字段的两种方式:
方式一:在序列化类中写
1 写一个字段,对应的字段类是:SerializerMethodField
2 必须对应一个 get_字段名的方法,方法必须接收一个obj,返回什么,这个字段对应的value就是什么
前端的数据格式:
方式二:在表模型中写:
1 在表模型中写一个方法(可以使用:property),方法有返回值(字典,字符串,列表)
2 在序列化类中,使用DictField,CharField,ListField
序列化类中:
models中:
3|0多表关联反序列化保存:
4|0多表关联反序列化修改:
5|0反序列化字段校验其他:
-字段自己的:max_length,required。。。
-字段自己的:配合一个函数name = serializers.CharField(max_length=8,validators=[xxx])
-局部钩子
-全局钩子
6|0ModelSerializer使用:
之前写的序列化类,继承了Serializer,写字段,跟表模型没有必然联系
class XXSerialzier(Serializer)
id=serializer.CharField()
name=serializer.CharField()
XXSerialzier既能序列化Book,又能序列化Publish
现在学的ModelSerializer,表示跟表模型一一对应,用法跟之前基本类似
1 写序列化类,继承ModelSerializer
2 在序列化类中,再写一个类,必须叫
class Meta:
model=表模型
fields=[] # 要序列化的字段
3 可以重写字段,一定不要放在class Meta
-定制字段,跟之前讲的一样
4 自定制的字段,一定要在fields中注册一下
5 class Meta: 有个extra_kwargs,为某个字段定制字段参数
6 局部钩子,全局钩子,完全一致
7 大部分请情况下,不需要重写 create和update了
__EOF__

本文链接:https://www.cnblogs.com/Hao12345/p/17413180.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!