Fixed #10968 - Form.errors should use Form.error_class.
Thanks for report and initial patch, matehat. git-svn-id: http://code.djangoproject.com/svn/django/trunk@11498 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
4decf03f9c
commit
7c53c2618d
|
@ -243,13 +243,13 @@ class BaseForm(StrAndUnicode):
|
||||||
value = getattr(self, 'clean_%s' % name)()
|
value = getattr(self, 'clean_%s' % name)()
|
||||||
self.cleaned_data[name] = value
|
self.cleaned_data[name] = value
|
||||||
except ValidationError, e:
|
except ValidationError, e:
|
||||||
self._errors[name] = e.messages
|
self._errors[name] = self.error_class(e.messages)
|
||||||
if name in self.cleaned_data:
|
if name in self.cleaned_data:
|
||||||
del self.cleaned_data[name]
|
del self.cleaned_data[name]
|
||||||
try:
|
try:
|
||||||
self.cleaned_data = self.clean()
|
self.cleaned_data = self.clean()
|
||||||
except ValidationError, e:
|
except ValidationError, e:
|
||||||
self._errors[NON_FIELD_ERRORS] = e.messages
|
self._errors[NON_FIELD_ERRORS] = self.error_class(e.messages)
|
||||||
if self._errors:
|
if self._errors:
|
||||||
delattr(self, 'cleaned_data')
|
delattr(self, 'cleaned_data')
|
||||||
|
|
||||||
|
|
|
@ -358,4 +358,42 @@ ValidationError: [u'NOT A LIST OF VALUES']
|
||||||
Traceback (most recent call last):
|
Traceback (most recent call last):
|
||||||
...
|
...
|
||||||
ValidationError: [u'4 IS INVALID CHOICE']
|
ValidationError: [u'4 IS INVALID CHOICE']
|
||||||
|
|
||||||
|
# Subclassing ErrorList #######################################################
|
||||||
|
|
||||||
|
>>> from django.utils.safestring import mark_safe
|
||||||
|
>>>
|
||||||
|
>>> class TestForm(Form):
|
||||||
|
... first_name = CharField()
|
||||||
|
... last_name = CharField()
|
||||||
|
... birthday = DateField()
|
||||||
|
...
|
||||||
|
... def clean(self):
|
||||||
|
... raise ValidationError("I like to be awkward.")
|
||||||
|
...
|
||||||
|
>>> class CustomErrorList(util.ErrorList):
|
||||||
|
... def __unicode__(self):
|
||||||
|
... return self.as_divs()
|
||||||
|
... def as_divs(self):
|
||||||
|
... if not self: return u''
|
||||||
|
... return mark_safe(u'<div class="error">%s</div>'
|
||||||
|
... % ''.join([u'<p>%s</p>' % e for e in self]))
|
||||||
|
...
|
||||||
|
|
||||||
|
This form should print errors the default way.
|
||||||
|
|
||||||
|
>>> form1 = TestForm({'first_name': 'John'})
|
||||||
|
>>> print form1['last_name'].errors
|
||||||
|
<ul class="errorlist"><li>This field is required.</li></ul>
|
||||||
|
>>> print form1.errors['__all__']
|
||||||
|
<ul class="errorlist"><li>I like to be awkward.</li></ul>
|
||||||
|
|
||||||
|
This one should wrap error groups in the customized way.
|
||||||
|
|
||||||
|
>>> form2 = TestForm({'first_name': 'John'}, error_class=CustomErrorList)
|
||||||
|
>>> print form2['last_name'].errors
|
||||||
|
<div class="error"><p>This field is required.</p></div>
|
||||||
|
>>> print form2.errors['__all__']
|
||||||
|
<div class="error"><p>I like to be awkward.</p></div>
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
Loading…
Reference in New Issue