• error_messages and validators


    1.validators 特殊的可以放下面

    from rest_framework.validators import UniqueTogetherValidator
    
    class ExampleSerializer(serializers.Serializer):
        # ...
        class Meta:
            # ToDo items belong to a parent list, and have an ordering defined
            # by the 'position' field. No two items in a given list may share
            # the same position.
            validators = [
                UniqueTogetherValidator(
                    queryset=ToDoItem.objects.all(),
                    fields=['list', 'position']
                )
            ]

    放上面也可以:

    name = serializers.CharField(label='名称',max_length=20, help_text='名称', validators=[UniqueValidator(queryset=Projecgts.object.all(),message='名称重复'),])

    2.自定义 validators:

    from importlib._common import _
    from rest_framework.serializers import ModelSerializer
    from ..models import Roob_Titles
    from rest_framework import serializers
    def my_validator(value):
        if  value>5:
           raise serializers.ValidationError('自定义validators->这个长度不可以大于5')
    
    class RoobSerializer(ModelSerializer):
        """ validators ,validate validate_col,"""
    
        r_id = serializers.IntegerField(validators=[my_validator])
        r_date = serializers.DateTimeField(format="%Y-%m-%d %H:%M:%S", required=True)
    

      

    3. validate 全字段和单字段:

    #  单个的
    class RoobSerializer(ModelSerializer):
    """ validators ,validate validate_col,"""

    r_id = serializers.IntegerField()
    r_date = serializers.DateTimeField(format="%Y-%m-%d %H:%M:%S", required=True)

    def validate_r_id(self, v):
    if v>5:
    raise serializers.ValidationError("单个字段验证猜想 {}".format(v))
    return v

    class Meta:
    model = Roob_Titles
    fields = '__all__'
    # validators = []
    error_messages = {
    'r_date': {'required': 'date can not empty ',
    'invalid': 'date is not invalid',
    'date': _('Expected a datetime but got a date.'),
    'make_aware': _('Invalid datetime for the timezone "{timezone}".')
    }
    }

    # 批量的:
    class RoobSerializer(ModelSerializer):
        """ validators ,validate validate_col,"""
    
        r_id = serializers.IntegerField()
        r_date = serializers.DateTimeField(format="%Y-%m-%d %H:%M:%S", required=True)
        #
        def validate(self, v):
            if v.get('r_id')>5:
              raise serializers.ValidationError("批量验证猜想  {}".format(dict(v)))
            return v
    
        class Meta:
            model = Roob_Titles
            fields = '__all__'
            # validators = []
            error_messages = {
                'r_date': {'required': 'date can not empty ',
                           'invalid': 'date is not invalid',
                           'date': _('Expected a datetime but got a date.'),
                           'make_aware': _('Invalid datetime for the timezone "{timezone}".')
                           },
                # 'r_id':{
                #
                # }
            }
    

    其次 error_messages:

      

  • 相关阅读:
    windows 下搭建apache php mysql p…
    PHP VC9和VC6以及Thread Safe和Non…
    mysql数据库插入中文时出现ERROR 1…
    phpmyadmin 配置
    Linux系统安装时分区的选择【转】
    汉字 Unicode 编码范围
    Linux 程序后台运行
    添加用户username到sudo组
    nautilus
    记录一下自己的.tmux.conf,.vimrc
  • 原文地址:https://www.cnblogs.com/SunshineKimi/p/16207894.html
Copyright © 2020-2023  润新知