Loading django/contrib/admin/checks.py +9 −2 Original line number Diff line number Diff line Loading @@ -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( Loading tests/admin_checks/tests.py +16 −0 Original line number Diff line number Diff line Loading @@ -69,6 +69,22 @@ class SystemChecksTestCase(SimpleTestCase): 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"] Loading Loading
django/contrib/admin/checks.py +9 −2 Original line number Diff line number Diff line Loading @@ -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( Loading
tests/admin_checks/tests.py +16 −0 Original line number Diff line number Diff line Loading @@ -69,6 +69,22 @@ class SystemChecksTestCase(SimpleTestCase): 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"] Loading