diff --git a/django/contrib/admin/templates/admin/change_list_results.html b/django/contrib/admin/templates/admin/change_list_results.html
index 29cf265804..6cfd9aff8e 100644
--- a/django/contrib/admin/templates/admin/change_list_results.html
+++ b/django/contrib/admin/templates/admin/change_list_results.html
@@ -17,9 +17,9 @@
{% for result in results %}
{% if result.form.non_field_errors %}
- {{ result.form.non_field_errors }} |
+ {{ result.form.non_field_errors }} |
{% endif %}
-{% for item in result.row %}{{ item }}{% endfor %}
+{% for item in result %}{{ item }}{% endfor %}
{% endfor %}
diff --git a/django/contrib/admin/templatetags/admin_list.py b/django/contrib/admin/templatetags/admin_list.py
index 199b1d97a3..7d4d8cdc98 100644
--- a/django/contrib/admin/templatetags/admin_list.py
+++ b/django/contrib/admin/templatetags/admin_list.py
@@ -195,13 +195,22 @@ def items_for_result(cl, result, form):
if form and not form[cl.model._meta.pk.name].is_hidden:
yield mark_safe(u'%s | ' % force_unicode(form[cl.model._meta.pk.name]))
+class ResultList(list):
+ # Wrapper class used to return items in a list_editable
+ # changelist, annotated with the form object for error
+ # reporting purposes. Needed to maintain backwards
+ # compatibility with existing admin templates.
+ def __init__(self, form, *items):
+ self.form = form
+ super(ResultList, self).__init__(*items)
+
def results(cl):
if cl.formset:
for res, form in zip(cl.result_list, cl.formset.forms):
- yield {'row': list(items_for_result(cl, res, form)), 'form': form}
+ yield ResultList(form, items_for_result(cl, res, form))
else:
for res in cl.result_list:
- yield {'row': list(items_for_result(cl, res, None)), 'form': None}
+ yield ResultList(None, items_for_result(cl, res, None))
def result_hidden_fields(cl):
if cl.formset: