Это мой UserSerializer (я использую по умолчанию Django модели пользователя):Настройка ModelSerializer игнорируется
class UserSerializer(SetCustomErrorMessagesMixin, serializers.ModelSerializer):
def __init__(self, *args, **kwargs):
super(UserSerializer, self).__init__(*args, **kwargs) # call the super()
for field in self.fields: # iterate over the serializer fields
self.fields[field].error_messages['required'] = 'Enter a valid %s.'%field
self.fields[field].error_messages['null'] = 'Enter a valid %s.'%field
# class CharField(Field) errors
self.fields[field].error_messages['blank'] = 'Enter a valid %s.'%field
self.fields[field].error_messages['max_length'] = '%s cannot have more than {max_length} characters.'%field
self.fields[field].error_messages['min_length'] = '%s cannot have less than {min_length} characters.'%field
class Meta:
model = User
fields = ('username', 'password', 'email',)
Проблема заключается в том, когда пользователь вводит имя пользователя, которое слишком долго, ошибка сообщение
"Username is too long."
Откуда это сообщение об ошибке? Я переписал сообщение об ошибке «max_length» в приведенном выше коде, но он не отображает его. Когда я удалить эту строку из моего UserSerialzer:
self.fields[field].error_messages['max_length'] = '%s cannot have more than {max_length} characters.'%field
, то сообщение об ошибке:
"Ensure this field has no more than 30 characters."
который имеет смысл Beause он исходит из исходного кода CharField ФПИ здесь: https://github.com/tomchristie/django-rest-framework/blob/master/rest_framework/fields.py
Но где «Имя пользователя слишком длинное». и откуда он не говорит: «Имя пользователя не может содержать больше символов {max_length}». вместо?
Откуда «поле» происходит в вашем '__init__'? – Ivan
@Ivan Извините, что при копировании моего кода я случайно удалил эту строку: «для поля в self.fields:». Я отредактировал мой пост и добавил строку сейчас. Это имеет смысл? – user2719875
Какие версии Django и DRF вы используете? – Ivan