DRF框架--序列化器(Serializer)和模型化序列化器(ModelSerializer)

序列化器:

ModeSerilaizer与常规的Serializer相同,但提供了:

  • 基于模型类自动生成一系列字段
  • 包含默认的create()和update()方法的实现

 

基础序列化器Serializer

模型序列化器ModelSerializer

复制代码
from rest_framework.serializers import ModelSerializerclass StudentSerializer(ModelSerializer):


    class Meta:
        model = models.Student
        fields = '__all__'
        # 指定序列化字段
        fields = ['name','age']
        # 指定排除序列化的字段
        exclude = ['name','age']
        # 只读字段
        read_only_fields = ('id','name')
        # 只写字段
        write_only_fields = ('id','name')
        # 跨表查询
        depth = 1  # 跨表1查询,最多建议写3
        # 加额外参数
        # ModelSerializer自动给id加readonly=True
        extra_kwargs = {
            'id':{'read_only':True},
            'name':{
                # 自定义内部参数校验
                'max_length':5,
                'min_length':2,
                # 自定义报错信息
                'error_messages':{'max_length':'名称太长了'},
                # 自定义校验函数
                'validators':[f1,f2]
            }
        }

        # 局部钩子
        def validate_name(self,data):
            pass
            return data

        # 全局钩子
        def validate(self,data):
            pass
            return data
复制代码

 

 

posted @   EricYJChung  阅读(65)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示