Index: django/forms/forms.py
===================================================================
--- django/forms/forms.py	(revision 10647)
+++ django/forms/forms.py	(working copy)
@@ -243,7 +243,8 @@
                     value = getattr(self, 'clean_%s' % name)()
                     self.cleaned_data[name] = value
             except ValidationError, e:
-                self._errors[name] = e.messages
+                self._errors[name] = self.error_class(e.messages)
+#                self._errors[name] = e.messages
                 if name in self.cleaned_data:
                     del self.cleaned_data[name]
         try:

Index: tests/regressiontests/forms/error_messages.py
===================================================================
--- tests/regressiontests/forms/error_messages.py	(revision 10647)
+++ tests/regressiontests/forms/error_messages.py	(working copy)
@@ -358,4 +358,38 @@
 Traceback (most recent call last):
 ...
 ValidationError: [u'4 IS INVALID CHOICE']
+
+# Subclassing ErrorList #######################################################
+
+>>> from django.forms import *
+>>> from django.utils.safestring import mark_safe
+>>> 
+>>> class TestForm(Form):
+...      first_name = CharField()
+...      last_name = CharField()
+...      birthday = DateField()
+... 
+>>> 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.errors
+<ul class="errorlist"><li>last_name<ul class="errorlist"><li>This field is required.</li></ul></li><li>birthday<ul class="errorlist"><li>This field is required.</li></ul></li></ul>
+>>> print form1['last_name'].errors
+<ul class="errorlist"><li>This field is required.</li></ul>
+
+This one should wrap error groups in the customized way.
+>>> form2 = TestForm({'first_name': 'John'}, error_class=CustomErrorList)
+>>> print form2.errors
+<ul class="errorlist"><li>last_name<div class="error"><p>This field is required.</p></div></li><li>birthday<div class="error"><p>This field is required.</p></div></li></ul>
+>>> print form2['last_name'].errors
+<div class="error"><p>This field is required.</p></div>
+
 """
