zoukankan      html  css  js  c++  java
  • serializer功能

    • ser.serialzers.py
    from rest_framework import serializers
    from user.models import User
    
    def address_validate(data):
          # 独立校验器
          # raise serializers.ValidateionError('请填写实际地址')    # 有错就抛出异常
          # 没错就返回数据
          return data
    
    class UserSerializer(serializers.ModelSerializer):
          # 1.独立校验器,重新设定字段,替换掉模型中的设定,重新设定地址的长度为5
          address = serializers.CharField(max_length=255,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.object.filter(phone=data).count()      
                if num > 0:
                      raise serilazers.ValidationError('手机号已存在')
                return data
    
          # 3.所有属性验证器
          def validate(self,attrs):
                # attrs:{'username':'zhangsan','phone':'12134546789'.....}
                # 所有属性验证器
                # self.context 中有request和view上下文
                # self.context['view'].action 可以取到动作
                # attrs 是需要序列化的数据 
                # raise serializers.ValidationError('xxx错误')      # 有问题报错
                returon attrs   # 没问题返回数据
    
          class Meta:
                model = User
                # fields = ('id',)     # 临时添加字段也需要写到这里
                fields ='__all__'      # 所有字段
                # excluds = ['id']     # 排除ID字段
                read_only_fields = ('',)   # 指定字段为 read_only
                
                # 扩展address extra_kwargs = {}   # 局部替换某些字段的设定,或者新增设定
                extra_kwargs = {
                      'address':{
                              'min_length': 5,  # 给地址增加最小长度限制
                              'default':"默认测试地址",      # 增加默认值
                      }
                }
    
    
    
  • 相关阅读:
    学习笔记2-查看目录文件
    学习笔记1-基本信息及相关目录
    【图论】二分图最大匹配
    【图论】Dinic算法
    【图论】最小割
    【数据结构】左偏树
    【数学】欧拉定理
    【数据结构】ST表
    【数学】博弈模型
    【字符串】后缀数组
  • 原文地址:https://www.cnblogs.com/yimeng123/p/13746457.html
Copyright © 2011-2022 走看看