Commits

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.

Comments (0)

Files changed (2)

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

 <tbody>
 {% 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 %}
 </tbody>
 </table>

django/contrib/admin/templatetags/admin_list.py

     if form and not form[cl.model._meta.pk.name].is_hidden:
         yield mark_safe(u'<td>%s</td>' % 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: