mirror of
https://github.com/django/django.git
synced 2025-07-04 09:49:12 +00:00
newforms-admin: Fixed #5628 -- When inlines have validation errors an error message is now displayed at the top of the page. Thanks Petr Marhoun for the improved patch.
git-svn-id: http://code.djangoproject.com/svn/django/branches/newforms-admin@7878 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
b46dc92ad3
commit
4772550a3c
@ -539,6 +539,7 @@ class ModelAdmin(BaseModelAdmin):
|
|||||||
'show_delete': False,
|
'show_delete': False,
|
||||||
'media': mark_safe(media),
|
'media': mark_safe(media),
|
||||||
'inline_admin_formsets': inline_admin_formsets,
|
'inline_admin_formsets': inline_admin_formsets,
|
||||||
|
'errors': AdminErrorList(form, inline_formsets),
|
||||||
'root_path': self.admin_site.root_path,
|
'root_path': self.admin_site.root_path,
|
||||||
}
|
}
|
||||||
context.update(extra_context or {})
|
context.update(extra_context or {})
|
||||||
@ -616,6 +617,7 @@ class ModelAdmin(BaseModelAdmin):
|
|||||||
'is_popup': request.REQUEST.has_key('_popup'),
|
'is_popup': request.REQUEST.has_key('_popup'),
|
||||||
'media': mark_safe(media),
|
'media': mark_safe(media),
|
||||||
'inline_admin_formsets': inline_admin_formsets,
|
'inline_admin_formsets': inline_admin_formsets,
|
||||||
|
'errors': AdminErrorList(form, inline_formsets),
|
||||||
'root_path': self.admin_site.root_path,
|
'root_path': self.admin_site.root_path,
|
||||||
}
|
}
|
||||||
context.update(extra_context or {})
|
context.update(extra_context or {})
|
||||||
@ -824,3 +826,15 @@ class InlineAdminForm(AdminForm):
|
|||||||
def ordering_field(self):
|
def ordering_field(self):
|
||||||
from django.newforms.formsets import ORDERING_FIELD_NAME
|
from django.newforms.formsets import ORDERING_FIELD_NAME
|
||||||
return AdminField(self.form, ORDERING_FIELD_NAME, False)
|
return AdminField(self.form, ORDERING_FIELD_NAME, False)
|
||||||
|
|
||||||
|
class AdminErrorList(forms.util.ErrorList):
|
||||||
|
"""
|
||||||
|
Stores all errors for the form/formsets in an add/change stage view.
|
||||||
|
"""
|
||||||
|
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())
|
||||||
|
@ -32,9 +32,9 @@
|
|||||||
<div>
|
<div>
|
||||||
{% if is_popup %}<input type="hidden" name="_popup" value="1" />{% endif %}
|
{% if is_popup %}<input type="hidden" name="_popup" value="1" />{% endif %}
|
||||||
{% if save_on_top %}{% submit_row %}{% endif %}
|
{% if save_on_top %}{% submit_row %}{% endif %}
|
||||||
{% if adminform.form.errors %}
|
{% if errors %}
|
||||||
<p class="errornote">
|
<p class="errornote">
|
||||||
{% blocktrans count adminform.form.errors.items|length as counter %}Please correct the error below.{% plural %}Please correct the errors below.{% endblocktrans %}
|
{% blocktrans count errors.items|length as counter %}Please correct the error below.{% plural %}Please correct the errors below.{% endblocktrans %}
|
||||||
</p>
|
</p>
|
||||||
<ul class="errorlist">{% for error in adminform.form.non_field_errors %}<li>{{ error }}</li>{% endfor %}</ul>
|
<ul class="errorlist">{% for error in adminform.form.non_field_errors %}<li>{{ error }}</li>{% endfor %}</ul>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user