• Serializer自定义序列化


    Serializer字段验证序列化

      class UserInfoSerializer(serializers.Serializer):
            id = serializers.CharField(read_only=True)  # 普通字段,设置id为只读字段,不可修改
            username = serializers.CharField(min_length=3, max_length=20, error_messages={'required': '该字段为必填项'})  # 显示普通字段
            img = serializers.ImageField(required=False)
            nick_name = serializers.CharField(max_length=20)
            address = serializers.CharField(max_length=255)
            xxx = serializers.SerializerMethodField(read_only=True)  # 自定义显示(显示多对多)
    
      class Meta:
          model = User
    
      # 自定义显示多对多字段
      def get_xxx(self, row):
          # row: 传过来的正是 User表的对象
          users = row.username  # 获取用户名
          return users
    
      # 定义创建语法:ser.save()执行,就会立刻调用create方法用来创建数据
      def create(self, validated_data):
          # validated_data: 表单或者vue携带的json
          return User.objects.create(**validated_data)
    
      # 定义更新方法
      def update(self, instance, validated_data):
          """
          :param instance: 查询的对象
          :param validated_data: postman提交的json数据, 新数据
          :return: instance
          """
          if validated_data.get('username'):
              instance.username = validated_data['username']
          instance.save()
          return instance
    
      # 定义单一字段验证的方法
      def validate_name(self, value):
          if value == 'root':
              raise serializers.ValidationError('不能创建root管理员账号')
          return value
    
      # 定义多字段验证方法
      def validate(self, attrs):
          print(attrs)
          if attrs.get("username") == 'admin':
              raise serializers.ValidationError('不能创建admin用户')
          return attrs
    
    
  • 相关阅读:
    数组
    原生获取 键盘 keycode 鼠标 键码
    javascript 拖拽
    简单的鼠标拖拽
    vue中格式化时间戳
    使用koa+angular+mysql 完成了一个企业站
    koa2+mysql5+angularjs1 搭建前后端全栈项目
    javascript利用闭包实现迭代器轮询数组中的元素
    AngularJS 1.x版本 学习教程
    改变,从羡慕别人开始
  • 原文地址:https://www.cnblogs.com/ihszg/p/13747863.html
Copyright © 2020-2023  润新知