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:

  

posted @ 2022-04-29 19:04  不带R的墨菲特  阅读(34)  评论(0)    收藏  举报