Loading django/db/models/fields/__init__.py +2 −1 Original line number Diff line number Diff line Loading @@ -1211,6 +1211,7 @@ class PositiveSmallIntegerField(IntegerField): return super(PositiveSmallIntegerField, self).formfield(**defaults) class SlugField(CharField): default_validators = [validators.validate_slug] description = _("Slug (up to %(max_length)s)") def __init__(self, *args, **kwargs): Loading Loading @@ -1320,12 +1321,12 @@ class TimeField(Field): return super(TimeField, self).formfield(**defaults) class URLField(CharField): default_validators = [validators.URLValidator()] description = _("URL") def __init__(self, verbose_name=None, name=None, **kwargs): kwargs['max_length'] = kwargs.get('max_length', 200) CharField.__init__(self, verbose_name, name, **kwargs) self.validators.append(validators.URLValidator()) def formfield(self, **kwargs): # As with CharField, this will cause URL validation to be performed Loading django/forms/fields.py +1 −4 Original line number Diff line number Diff line Loading @@ -638,10 +638,7 @@ class URLField(CharField): default_error_messages = { 'invalid': _('Enter a valid URL.'), } def __init__(self, max_length=None, min_length=None, *args, **kwargs): super(URLField, self).__init__(max_length, min_length, *args, **kwargs) self.validators.append(validators.URLValidator()) default_validators = [validators.URLValidator()] def to_python(self, value): Loading tests/validation/models.py +1 −0 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ class ModelToValidate(models.Model): email = models.EmailField(blank=True) url = models.URLField(blank=True) f_with_custom_validator = models.IntegerField(blank=True, null=True, validators=[validate_answer_to_universe]) slug = models.SlugField(blank=True) def clean(self): super(ModelToValidate, self).clean() Loading tests/validation/tests.py +5 −1 Original line number Diff line number Diff line Loading @@ -53,7 +53,11 @@ class BaseModelValidationTests(ValidationTestCase): def test_text_greater_that_charfields_max_length_raises_erros(self): mtv = ModelToValidate(number=10, name='Some Name'*100) self.assertFailsValidation(mtv.full_clean, ['name',]) self.assertFailsValidation(mtv.full_clean, ['name']) def test_malformed_slug_raises_error(self): mtv = ModelToValidate(number=10, name='Some Name', slug='##invalid##') self.assertFailsValidation(mtv.full_clean, ['slug']) class ArticleForm(forms.ModelForm): Loading Loading
django/db/models/fields/__init__.py +2 −1 Original line number Diff line number Diff line Loading @@ -1211,6 +1211,7 @@ class PositiveSmallIntegerField(IntegerField): return super(PositiveSmallIntegerField, self).formfield(**defaults) class SlugField(CharField): default_validators = [validators.validate_slug] description = _("Slug (up to %(max_length)s)") def __init__(self, *args, **kwargs): Loading Loading @@ -1320,12 +1321,12 @@ class TimeField(Field): return super(TimeField, self).formfield(**defaults) class URLField(CharField): default_validators = [validators.URLValidator()] description = _("URL") def __init__(self, verbose_name=None, name=None, **kwargs): kwargs['max_length'] = kwargs.get('max_length', 200) CharField.__init__(self, verbose_name, name, **kwargs) self.validators.append(validators.URLValidator()) def formfield(self, **kwargs): # As with CharField, this will cause URL validation to be performed Loading
django/forms/fields.py +1 −4 Original line number Diff line number Diff line Loading @@ -638,10 +638,7 @@ class URLField(CharField): default_error_messages = { 'invalid': _('Enter a valid URL.'), } def __init__(self, max_length=None, min_length=None, *args, **kwargs): super(URLField, self).__init__(max_length, min_length, *args, **kwargs) self.validators.append(validators.URLValidator()) default_validators = [validators.URLValidator()] def to_python(self, value): Loading
tests/validation/models.py +1 −0 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ class ModelToValidate(models.Model): email = models.EmailField(blank=True) url = models.URLField(blank=True) f_with_custom_validator = models.IntegerField(blank=True, null=True, validators=[validate_answer_to_universe]) slug = models.SlugField(blank=True) def clean(self): super(ModelToValidate, self).clean() Loading
tests/validation/tests.py +5 −1 Original line number Diff line number Diff line Loading @@ -53,7 +53,11 @@ class BaseModelValidationTests(ValidationTestCase): def test_text_greater_that_charfields_max_length_raises_erros(self): mtv = ModelToValidate(number=10, name='Some Name'*100) self.assertFailsValidation(mtv.full_clean, ['name',]) self.assertFailsValidation(mtv.full_clean, ['name']) def test_malformed_slug_raises_error(self): mtv = ModelToValidate(number=10, name='Some Name', slug='##invalid##') self.assertFailsValidation(mtv.full_clean, ['slug']) class ArticleForm(forms.ModelForm): Loading