validate_fieldname

<field_name>字段进行验证,如

class BookInfoSerializer(serializers.Serializer):
    """图书数据序列化器"""
    id = serializers.IntegerField(label='ID', read_only=True)
    name = serializers.CharField(label='名称', max_length=20)
    pub_date = serializers.DateField(label='发布日期', required=False)
    readcount = serializers.IntegerField(label='阅读量', required=False)
    commentcount = serializers.IntegerField(label='评论量', required=False)

    def validate_readcount(self,value):
        if value < 0:
            raise serializers.ValidationError('阅读数量不能为负数')
        return value

测试

>>> from book.serializers import BookInfoSerializer
>>> 
>>> data = {
...     'name':'Python高级',
...     'pub_date':'2020-01-01',
...     'readcount':-100,
...     'commentcount':200
... }
>>> 
>>> serializer = BookInfoSerializer(data=data)
>>> 
>>> serializer.is_valid(raise_exception=True)
Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "/home/ubuntu/.virtualenvs/py3_django_2_2_5/lib/python3.6/site-packages/rest_framework/serializers.py", line 242, in is_valid
    raise ValidationError(self.errors)
rest_framework.exceptions.ValidationError: {'readcount': [ErrorDetail(string='阅读数量不能为负数', code='invalid')]}
>>>