From 4c7b3040d833dba60dc31890b28c86af2bd1f55f Mon Sep 17 00:00:00 2001 From: Carlton Gibson Date: Wed, 15 Nov 2017 11:32:29 +0100 Subject: [PATCH] Pickup custom message for min_length validators --- rest_framework/utils/field_mapping.py | 7 ++++--- tests/test_validators.py | 5 ++++- 2 files changed, 8 insertions(+), 4 deletions(-) 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: