04 DRF的Serializer和ModelSerializer的区别

编辑本文章

Rest Framework官方文档

 

主要内容 标题 Serializer ModelSerializer
Field 常用Field CharField,IntegerField,BooleanField,DateTimeField,ChoiceField
参数 required,read_only,write_only,allow_null/allow_blank,label,help_text,error_messages,context,source
定义 字段的书写 手动写跟Model匹配的所有字段 在Meta中写参数fields/exclude去自动匹配
Save Instance   serializer.save(),他调用了serializer的create和update方法
  当post请求时,需要重写create()方法 ModelSerializer已经封装了这两个方法,如果需要额外定义,可以重载这两个方法
  当patch/put请求时,需要重写update()方法
validate is_valid 验证成功,数据保存在serializer.validated_data中
验证失败,错误消息在serializer.error中
Validation自定义验证 单独的validate 对某个字段进行自定义验证逻辑,重载validate_<field-name>方法,参数是value
联合validate 对多个字段进行自定义的验证,重载validate()方法,参数是attrs字典
validators 对所有的字段进行自定义的验证,参数是value,在字段增加validators=[my_validaror]参数
异常 自定义验证不通过的,可以手动抛出serializer.ValidationError("错误消息")
外键的serializers 正向 通过正向字段嵌套serializer,获取外键的全部内容 ModelSerializer可以通过在Meta中配置depath参数来获得关联的深度
反向 通过向related_name嵌套serializer,获取外键的全部内容
SerializerMethodField 自定义要获取的字段内容,用get_<field-name>钩子来自定义内容

 

 

 

 

 

 

 

 

 

 

 

sdf

 

posted @ 2019-06-25 07:33  丫丫625202  阅读(922)  评论(1编辑  收藏  举报