Commit c6523833 authored by Fabrizio Ettore Messina's avatar Fabrizio Ettore Messina Committed by Tim Graham
Browse files

[1.8.x] Fixed #25267 -- Corrected message for admin.E122 system check.

Backport of ece78684 from master
parent d5e3eb98
Loading
Loading
Loading
Loading
+9 −2
Original line number Diff line number Diff line
@@ -774,8 +774,15 @@ class ModelAdminChecks(BaseModelAdminChecks):
                                          model=model, obj=cls, id='admin.E121')
        else:
            if field_name not in cls.list_display:
                return refer_to_missing_field(field=field_name, option=label,
                                              model=model, obj=cls, id='admin.E122')
                return [
                    checks.Error(
                        "The value of '%s' refers to '%s', which is not "
                        "contained in 'list_display'." % (label, field_name),
                        hint=None,
                        obj=cls,
                        id='admin.E122',
                    )
                ]
            elif cls.list_display_links and field_name in cls.list_display_links:
                return [
                    checks.Error(
+16 −0
Original line number Diff line number Diff line
@@ -70,6 +70,22 @@ class SystemChecksTestCase(TestCase):
            custom_site.unregister(Song)
            admin.sites.system_check_errors = []

    def test_field_name_not_in_list_display(self):
        class SongAdmin(admin.ModelAdmin):
            list_editable = ["original_release"]

        errors = SongAdmin.check(model=Song)
        expected = [
            checks.Error(
                "The value of 'list_editable[0]' refers to 'original_release', "
                "which is not contained in 'list_display'.",
                hint=None,
                obj=SongAdmin,
                id='admin.E122',
            )
        ]
        self.assertEqual(errors, expected)

    def test_readonly_and_editable(self):
        class SongAdmin(admin.ModelAdmin):
            readonly_fields = ["original_release"]