Pickup custom message for min_length validators

This commit is contained in:
Carlton Gibson 2017-11-15 11:32:29 +01:00
parent c3fd86d323
commit 4c7b3040d8
2 changed files with 8 additions and 4 deletions

View File

@ -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)

View File

@ -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: