Fixed #8040 -- SlugField now returns a proper formfield to deal with validation. Thanks Daniel Pope for the ticket and patch.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@8477 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
a64dc39fb7
commit
5061970b76
|
@ -890,6 +890,13 @@ class SlugField(CharField):
|
||||||
def get_internal_type(self):
|
def get_internal_type(self):
|
||||||
return "SlugField"
|
return "SlugField"
|
||||||
|
|
||||||
|
def formfield(self, **kwargs):
|
||||||
|
defaults = {'form_class': forms.RegexField, 'regex': r'^[a-zA-Z0-9_-]+$',
|
||||||
|
'error_messages': {'invalid': _(u"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens.")},
|
||||||
|
}
|
||||||
|
defaults.update(kwargs)
|
||||||
|
return super(SlugField, self).formfield(**defaults)
|
||||||
|
|
||||||
class SmallIntegerField(IntegerField):
|
class SmallIntegerField(IntegerField):
|
||||||
def get_manipulator_field_objs(self):
|
def get_manipulator_field_objs(self):
|
||||||
return [oldforms.SmallIntegerField]
|
return [oldforms.SmallIntegerField]
|
||||||
|
|
|
@ -65,7 +65,8 @@ the full list of conversions:
|
||||||
(from ``django.contrib.localflavor.us``)
|
(from ``django.contrib.localflavor.us``)
|
||||||
``PositiveIntegerField`` ``IntegerField``
|
``PositiveIntegerField`` ``IntegerField``
|
||||||
``PositiveSmallIntegerField`` ``IntegerField``
|
``PositiveSmallIntegerField`` ``IntegerField``
|
||||||
``SlugField`` ``CharField``
|
``SlugField`` ``RegexField`` accepting only letters,
|
||||||
|
numbers, underscores and hyphens
|
||||||
``SmallIntegerField`` ``IntegerField``
|
``SmallIntegerField`` ``IntegerField``
|
||||||
``TextField`` ``CharField`` with ``widget=Textarea``
|
``TextField`` ``CharField`` with ``widget=Textarea``
|
||||||
``TimeField`` ``TimeField``
|
``TimeField`` ``TimeField``
|
||||||
|
|
|
@ -301,11 +301,11 @@ u'third-test'
|
||||||
[<Category: Entertainment>, <Category: It's a test>, <Category: Third test>]
|
[<Category: Entertainment>, <Category: It's a test>, <Category: Third test>]
|
||||||
|
|
||||||
If you call save() with invalid data, you'll get a ValueError.
|
If you call save() with invalid data, you'll get a ValueError.
|
||||||
>>> f = CategoryForm({'name': '', 'slug': '', 'url': 'foo'})
|
>>> f = CategoryForm({'name': '', 'slug': 'not a slug!', 'url': 'foo'})
|
||||||
>>> f.errors['name']
|
>>> f.errors['name']
|
||||||
[u'This field is required.']
|
[u'This field is required.']
|
||||||
>>> f.errors['slug']
|
>>> f.errors['slug']
|
||||||
[u'This field is required.']
|
[u"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens."]
|
||||||
>>> f.cleaned_data
|
>>> f.cleaned_data
|
||||||
Traceback (most recent call last):
|
Traceback (most recent call last):
|
||||||
...
|
...
|
||||||
|
|
Loading…
Reference in New Issue