From c3fd86d32311c4164b7de66db70e9aae95f48976 Mon Sep 17 00:00:00 2001 From: Carlton Gibson Date: Wed, 15 Nov 2017 11:18:32 +0100 Subject: [PATCH] Pickup custom message for URLField --- rest_framework/utils/field_mapping.py | 3 +++ tests/test_validators.py | 6 ++++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/rest_framework/utils/field_mapping.py b/rest_framework/utils/field_mapping.py index 2911265a9..6234c68ca 100644 --- a/rest_framework/utils/field_mapping.py +++ b/rest_framework/utils/field_mapping.py @@ -156,6 +156,9 @@ def get_field_kwargs(field_name, model_field): # URLField does not need to include the URLValidator argument, # as it is explicitly added in. if isinstance(model_field, models.URLField): + custom_message = model_field.error_messages.get("invalid", None) + if custom_message is not None: + kwargs.setdefault('error_messages', {}).update(invalid=custom_message) validator_kwarg = [ validator for validator in validator_kwarg if not isinstance(validator, validators.URLValidator) diff --git a/tests/test_validators.py b/tests/test_validators.py index 7b4d9b654..4df0685c4 100644 --- a/tests/test_validators.py +++ b/tests/test_validators.py @@ -3,7 +3,7 @@ import datetime import pytest from django.core.validators import ( MaxLengthValidator, MaxValueValidator, MinLengthValidator, - MinValueValidator, URLValidator + MinValueValidator ) from django.db import DataError, models from django.test import TestCase @@ -597,7 +597,9 @@ class ValidatorMessageTests(TestCase): def test_url_validator_message_is_copied_from_model(self): class BlogModel(models.Model): - url = models.URLField(validators=[URLValidator(message='This URL is not valid.')]) + url = models.URLField( + error_messages={"invalid": "This URL is not valid."} + ) class BlogSerializer(serializers.ModelSerializer): class Meta: