=== modified file 'django/contrib/admin/options.py' --- django/contrib/admin/options.py 2007-11-13 02:22:09 +0000 +++ django/contrib/admin/options.py 2007-11-13 02:15:40 +0000 @@ -522,6 +522,7 @@ 'show_delete': False, 'media': media, 'inline_admin_formsets': inline_admin_formsets, + 'errors': AdminErrorList(form, inline_formsets), }) return self.render_change_form(model, c, add=True) @@ -597,6 +598,7 @@ 'is_popup': request.REQUEST.has_key('_popup'), 'media': media, 'inline_admin_formsets': inline_admin_formsets, + 'errors': AdminErrorList(form, inline_formsets), }) return self.render_change_form(model, c, change=True) @@ -805,3 +807,13 @@ def ordering_field(self): from django.newforms.formsets import ORDERING_FIELD_NAME return AdminField(self.form, ORDERING_FIELD_NAME, False) + +class AdminErrorList(forms.util.ErrorList): + + def __init__(self, form, inline_formsets): + if form.is_bound: + self.extend(form.errors.values()) + for inline_formset in inline_formsets: + self.extend(inline_formset.non_form_errors()) + for errors_in_inline_form in inline_formset.errors: + self.extend(errors_in_inline_form.values()) === modified file 'django/contrib/admin/templates/admin/change_form.html' --- django/contrib/admin/templates/admin/change_form.html 2007-11-13 02:22:08 +0000 +++ django/contrib/admin/templates/admin/change_form.html 2007-11-13 02:15:40 +0000 @@ -34,9 +34,10 @@
- {% blocktrans count adminform.form.errors.items|length as counter %}Please correct the error below.{% plural %}Please correct the errors below.{% endblocktrans %} + {% blocktrans count errors|length as counter %}Please correct the error below.{% plural %}Please correct the errors below.{% endblocktrans %} + {{ adminform.form.non_field_errors }}
{% endif %}