zoukankan      html  css  js  c++  java
  • 05.ModelSerializer字段验证、序列化

    from rest_framework import serializers
    from user.models import User
    
    def address_validate(data):
        # 独立校验器
        # raise serializers.ValidationError('请写真实地址')    有错就抛出异常
        return data
        # 没错就返回数据
        return data
    
    class UserSerializer(serializers.ModelSerializer):
        # 1.独立校验器:重新设定字段,替换掉模型中的设定,重新设定地址长度为5
        address = serializers.CharField(max_length=225, min_length=5, validators=[address_validate])
        
        # 2.单一字段验证,验证地址
        def validate_address(self,data):
            if data == '测试':
                raise serializers.ValidationError('请填写实际地址')  #有异常就抛出异常
             return data
        def validate_phone(self,data):
            # 不符合手机号格式
            # raise serializers.ValidationError("手机号格式不正确")
            model = self.root.Meta.model
            num = model.objects.filter(phone=data).count()
            if num > 0:
                raise serializers.ValidationError('手机号已存在')
             return data
        
        # 3.所有属性验证器
        def validate(self,attrs):
            #attrs:{"username":"zhangsan","phone":"185156315",....}
            # 所有属性验证器
            # self.context 中有requset和view上下文
            # self.context['view'].action 可以取到动作
            # attrs 是需要序列化的数据
            # raise serializers.ValidationError('xxx错误') # 又问题报错 
            return attrs  # 没问题返回
    
        
        class Meta:
            model = User
            # fields = ('id',) # 临时添加字段也要写在这里
            fields = "__all__" # 所有字段
            # exclude = ['id] # 排除 id 字段
            read_only_fields = ('',) #指定字段为 read_only
    
    
            # 扩展address:  extra_kwargs = {} # 局部替换某些字段的设定, 或者新增设定
            exrea_kwargs={
                'address':{
                    'min_length':5,
                    'default':'默认测试' # 增加默认值
                }
            }
    
  • 相关阅读:
    Linux压缩和解压类指令
    Linux 搜索查找类指令
    Linux时间日期类指令
    Linux文件目录类指令
    Linux帮助指令
    Linux运行级别
    微信授权获取code/openid
    微信公众配置
    MySQL规范
    PHP7搭建项目遇到的坑
  • 原文地址:https://www.cnblogs.com/fiee/p/13746350.html
Copyright © 2011-2022 走看看