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: