33.ModelSerializer详解
2024-09-18 05:59:24
ModelSerializer特点
- 根据Model模型的定义,自动生成字段
- 自动生成相应的验证器
- 实现create和update
- 自动默认将关系字段映射成PrimaryKeyRelatedField主键关系字段
ModelSerializer指定序列化字段三种方法
class CategorySerializer(serializers.ModelSerializer):
class Meta:
model = Category
# 1.序列化指定字段
fields = ('id', 'name',)
# 2.序列化全部所有的字段
fields = '__all__'
# 3. 序列化除了user以外的所有字段
exclude = ('user',)
'''
三种方法只能使用一种
第二种和第三种方法有暴露数据的风险
例如数据库有password字段,第二种会直接序列化出来,第三种,如果没有排除的话,也会序列化出来
'''
depth
depth用于指定序列化字段时嵌套的深度
如下其中的category分类返回了对应的两个分类id
不查看category数据的话
我们并不知道对应id的name是什么
class TextSerializer(serializers.ModelSerializer):
auth = AuthSerializer()
class Meta:
model = Text
fields = ('id', 'title', 'content', 'auth', 'category', 'created')
# 修改Text序列化器,指定depth深度为1
depth = 1
可以看出指定深度后,返回的内容 除了id还有对应的name
read_only_field
'''
如果我们使用Serializer类写序列化的时候,有字段希望只读不被修改的话,会通过read_only字段设定,例如
name = serializer.Charfield(read_only=True)
在ModelSerializer中,如果要设定的只读字段的话使用read_only_field批量指定元组即可
不需要像serializer中一个一个字段设置指定
'''
class Meta:
model = Text
fields = ('id', 'title', 'content', 'auth', 'category', 'created')
depth = 1
read_only_field = ('created','auth',)
extra_kwargs额外的关键字参数
class Meta:
model = Text
fields = ('id', 'title', 'content', 'auth', 'category', 'created')
depth = 1
read_only_field = ('created','auth',)
# 使用extra_kwargs指定字典
extra_kwargs = {
# key就是字段名,value就是要设置的参数
'title':{'write_only':True,'require':True},
}
最新文章
- Atom编辑器的插件
- css3几个新属性
- mysql insert插入新形式,再也不需要拼接多重insert啦
- SAP实施方法与过程——ASAP
- 面试cookie
- Java中的一些常见错误
- 《Effective C++》 阅读小结 (笔记)
- 平方和与立方和 AC 杭电
- HDU 5348 MZL's endless loop
- DS5 调试 android c++
- Angular - - $interval 和 $timeout
- 微信分享 JSSDK的使用
- [LeetCode] Binary Tree Tilt 二叉树的坡度
- 在C++中怎么判断一个double型数据的小数点部分是否为零
- 穷举,迭代,while循环
- 谷歌浏览器报错 Active resource loading counts reached to a per-frame
- 【问题解决:启动卡死】Eclipse启动卡死的解决办法
- 从头调试stm32 HID
- IDEA使用笔记(四)——工具栏的显示隐藏切换
- goland激活码
热门文章
- while 循环、do- while 循环 和 for 循环之间的那点事
- 用好JAVA中的函数式接口,轻松从通用代码框架中剥离掉业务定制逻辑
- Python 中MATLABspline函数的替代函数
- ASP.NET Core 5.0中的Host.CreateDefaultBuilder执行过程
- Redis 11 配置
- java-前端之js
- Mybatis框架--优化过程
- Excelize 发布 2.6.0 版本,功能强大的 Excel 文档基础库
- 为什么各大厂自研的内存泄漏检测框架都要参考 LeakCanary?因为它是真强啊!
- day24--Java集合07