Pickup custom message for EmailField

Set via `error_messages`, since `validate_email` is already present on field.
This commit is contained in:
Carlton Gibson 2017-11-15 11:07:37 +01:00
parent 8f7c91d3a7
commit e7dd68e8fa
2 changed files with 7 additions and 2 deletions

View File

@ -164,6 +164,9 @@ def get_field_kwargs(field_name, model_field):
# EmailField does not need to include the validate_email argument,
# as it is explicitly added in.
if isinstance(model_field, models.EmailField):
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 validator is not validators.validate_email

View File

@ -2,7 +2,7 @@ import datetime
import pytest
from django.core.validators import (
EmailValidator, MaxLengthValidator, MaxValueValidator, MinLengthValidator,
MaxLengthValidator, MaxValueValidator, MinLengthValidator,
MinValueValidator, URLValidator
)
from django.db import DataError, models
@ -612,7 +612,9 @@ class ValidatorMessageTests(TestCase):
def test_email_validator_message_is_copied_from_model(self):
class UserModel(models.Model):
email = models.EmailField(validators=[EmailValidator(message='Please enter a valid email.')])
email = models.EmailField(
error_messages={"invalid": "Please enter a valid email."}
)
class UserSerializer(serializers.ModelSerializer):
class Meta: