这是我的 serializers.py(我想为内置的 User 模型创建一个序列化程序):
from rest_framework import serializers
from django.contrib.auth.models import User
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ('username', 'password', 'email', )
我知道 Django Rest Framework 有它自己的字段验证器,因为当我尝试使用已经存在的用户名创建用户时,它会引发错误提示:
{'username': [u'This field must be unique.']}
我想自定义错误消息并使其显示“此用户名已被占用。请重试”而不是“此字段必须是唯一的”。
它还有一个内置的正则表达式验证器,因为当我创建一个带有感叹号的用户名时,它会说:
{'username': [u'Enter a valid username. This value may contain only letters, numbers and @/./+/-/_ characters.']}
我想自定义正则表达式验证器,使其只显示“无效的用户名”。
如何自定义每个字段具有的所有错误消息?
注意:根据这篇文章:Django Rest Framework 序列化程序中的自定义错误消息我可以做:
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
def __init__(self, *args, **kwargs):
super(UserSerializer, self).__init__(*args, **kwargs)
self.fields['username'].error_messages['required'] = u'My custom required msg'
但是对于“唯一”和“正则表达式”验证器,我该怎么办?我试着做
self.fields['username'].error_messages['regex'] = u'My custom required msg'
和
self.fields['username'].error_messages['validators'] = u'My custom required msg'
但都没有奏效。