Anonymous committed 7d2c00e

[1.2.X] Tweaked the changes from changeset r15580 so as to avoid introducing a backwards incompatible context change to the change_list_results template. Refs #13126. Thanks to Sean Brant for the report.

Backport of r15593 from trunk.

  • Participants
  • Parent commits 34cf6f0
  • Branches releases/1.2.X

Comments (0)

Files changed (2)

File django/contrib/admin/templates/admin/change_list_results.html

 {% for result in results %}
 {% if result.form.non_field_errors %}
-    <tr><td colspan="{{ result.row|length }}">{{ result.form.non_field_errors }}</td></tr>
+    <tr><td colspan="{{ result|length }}">{{ result.form.non_field_errors }}</td></tr>
 {% endif %}
-<tr class="{% cycle 'row1' 'row2' %}">{% for item in result.row %}{{ item }}{% endfor %}</tr>
+<tr class="{% cycle 'row1' 'row2' %}">{% for item in result %}{{ item }}{% endfor %}</tr>
 {% endfor %}

File django/contrib/admin/templatetags/

     if form and not form[].is_hidden:
         yield mark_safe(u'<td>%s</td>' % force_unicode(form[]))
+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))
         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: