diff --git a/rest_framework/utils/field_mapping.py b/rest_framework/utils/field_mapping.py index 6234c68ca..f1305e850 100644 --- a/rest_framework/utils/field_mapping.py +++ b/rest_framework/utils/field_mapping.py @@ -209,12 +209,13 @@ def get_field_kwargs(field_name, model_field): # Ensure that min_length is passed explicitly as a keyword arg, # rather than as a validator. - min_length = next(( - validator.limit_value for validator in validator_kwarg + min_length, message = next(( + (validator.limit_value, validator.message) for validator in validator_kwarg if isinstance(validator, validators.MinLengthValidator) - ), None) + ), (None, None)) if min_length is not None and isinstance(model_field, models.CharField): kwargs['min_length'] = min_length + kwargs.setdefault('error_messages', {}).update(min_length=message) validator_kwarg = [ validator for validator in validator_kwarg if not isinstance(validator, validators.MinLengthValidator) diff --git a/tests/test_validators.py b/tests/test_validators.py index 4df0685c4..a008cbc21 100644 --- a/tests/test_validators.py +++ b/tests/test_validators.py @@ -631,7 +631,10 @@ class ValidatorMessageTests(TestCase): def test_min_length_validator_message_is_copied_from_model(self): class Review(models.Model): - text = models.CharField(max_length=100, validators=[MinLengthValidator(limit_value=5, message='This is too short.')]) + text = models.CharField( + max_length=100, + validators=[MinLengthValidator(limit_value=5, message='This is too short.')] + ) class ReviewSerializer(serializers.ModelSerializer): class Meta: