• 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
    
    
  • 相关阅读:
    Spring AOP切点表达式用法总结
    各种文档地址记录
    回顾乐信集团工作经历
    Redux的简单使用
    简单介绍软件测试(一)
    jupyter notebook 安装代码提示功能
    解决matplotlib不显示中文的问题
    前端生成二维码并下载(PC端)
    XSS绕过常见方式
    JWT的安全问题
  • 原文地址:https://www.cnblogs.com/ihszg/p/13747863.html
Copyright © 2020-2023  润新知