Commit ad0f0daf authored by Tim Graham's avatar Tim Graham
Browse files

Fixed #24851 -- Fixed crash with reverse one-to-one relation in ModelAdmin.list_display

Forwardport of 2456276b from stable/1.8.x
parent 80ad5472
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -200,7 +200,7 @@ def items_for_result(cl, result, form):
        except ObjectDoesNotExist:
            result_repr = EMPTY_CHANGELIST_VALUE
        else:
            if f is None:
            if f is None or f.auto_created:
                if field_name == 'action_checkbox':
                    row_classes = ['action-checkbox']
                allow_tags = getattr(attr, 'allow_tags', False)
+3 −0
Original line number Diff line number Diff line
@@ -28,3 +28,6 @@ Bugfixes

* Prevented the loss of ``null``/``not null`` column properties during field
  renaming of MySQL databases (:ticket:`24817`).

* Fixed a crash when using a reverse one-to-one relation in
  ``ModelAdmin.list_display`` (:ticket:`24851`).
+1 −1
Original line number Diff line number Diff line
@@ -107,7 +107,7 @@ site.register(Parent, NoListDisplayLinksParentAdmin)

class SwallowAdmin(admin.ModelAdmin):
    actions = None  # prevent ['action_checkbox'] + list(list_display)
    list_display = ('origin', 'load', 'speed')
    list_display = ('origin', 'load', 'speed', 'swallowonetoone')

site.register(Swallow, SwallowAdmin)

+4 −0
Original line number Diff line number Diff line
@@ -83,6 +83,10 @@ class Swallow(models.Model):
        ordering = ('speed', 'load')


class SwallowOneToOne(models.Model):
    swallow = models.OneToOneField(Swallow)


class UnorderedObject(models.Model):
    """
    Model without any defined `Meta.ordering`.
+8 −3
Original line number Diff line number Diff line
@@ -27,7 +27,7 @@ from .admin import (
from .models import (
    Band, Child, ChordsBand, ChordsMusician, Concert, CustomIdUser, Event,
    Genre, Group, Invitation, Membership, Musician, OrderedObject, Parent,
    Quartet, Swallow, UnorderedObject,
    Quartet, Swallow, SwallowOneToOne, UnorderedObject,
)


@@ -547,8 +547,10 @@ class ChangeListTests(TestCase):
        Regression test for #17128
        (ChangeList failing under Python 2.5 after r16319)
        """
        swallow = Swallow.objects.create(
            origin='Africa', load='12.34', speed='22.2')
        swallow = Swallow.objects.create(origin='Africa', load='12.34', speed='22.2')
        swallow2 = Swallow.objects.create(origin='Africa', load='12.34', speed='22.2')
        swallow_o2o = SwallowOneToOne.objects.create(swallow=swallow2)

        model_admin = SwallowAdmin(Swallow, custom_site)
        superuser = self._create_superuser('superuser')
        request = self._mocked_authenticated_request('/swallow/', superuser)
@@ -557,6 +559,9 @@ class ChangeListTests(TestCase):
        self.assertContains(response, six.text_type(swallow.origin))
        self.assertContains(response, six.text_type(swallow.load))
        self.assertContains(response, six.text_type(swallow.speed))
        # Reverse one-to-one relations should work.
        self.assertContains(response, '<td class="field-swallowonetoone">-</td>')
        self.assertContains(response, '<td class="field-swallowonetoone">%s</td>' % swallow_o2o)

    def test_deterministic_order_for_unordered_model(self):
        """