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},
}
 

最新文章

  1. Atom编辑器的插件
  2. css3几个新属性
  3. mysql insert插入新形式,再也不需要拼接多重insert啦
  4. SAP实施方法与过程——ASAP
  5. 面试cookie
  6. Java中的一些常见错误
  7. 《Effective C++》 阅读小结 (笔记)
  8. 平方和与立方和 AC 杭电
  9. HDU 5348 MZL's endless loop
  10. DS5 调试 android c++
  11. Angular - - $interval 和 $timeout
  12. 微信分享 JSSDK的使用
  13. [LeetCode] Binary Tree Tilt 二叉树的坡度
  14. 在C++中怎么判断一个double型数据的小数点部分是否为零
  15. 穷举,迭代,while循环
  16. 谷歌浏览器报错 Active resource loading counts reached to a per-frame
  17. 【问题解决:启动卡死】Eclipse启动卡死的解决办法
  18. 从头调试stm32 HID
  19. IDEA使用笔记(四)——工具栏的显示隐藏切换
  20. goland激活码

热门文章

  1. while 循环、do- while 循环 和 for 循环之间的那点事
  2. 用好JAVA中的函数式接口,轻松从通用代码框架中剥离掉业务定制逻辑
  3. Python 中MATLABspline函数的替代函数
  4. ASP.NET Core 5.0中的Host.CreateDefaultBuilder执行过程
  5. Redis 11 配置
  6. java-前端之js
  7. Mybatis框架--优化过程
  8. Excelize 发布 2.6.0 版本,功能强大的 Excel 文档基础库
  9. 为什么各大厂自研的内存泄漏检测框架都要参考 LeakCanary?因为它是真强啊!
  10. day24--Java集合07