diff options
| author | siddhartha-star-dev <bestsid1@gmail.com> | 2022-02-18 23:04:05 +0530 |
|---|---|---|
| committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2022-04-25 11:00:50 +0200 |
| commit | dcebc5da4831d2982b26d00a9480ad538b5c5acf (patch) | |
| tree | 77d40270ad5658e6101683d5fcf0ad991af66677 | |
| parent | ed0a2c3238aa0b9c0d01c436d5bcd70930d696b0 (diff) | |
Refs #2259 -- Disallowed primary keys in ModelAdmin.list_editable.
Refs #32728.
| -rw-r--r-- | django/contrib/admin/checks.py | 2 | ||||
| -rw-r--r-- | tests/admin_checks/tests.py | 17 |
2 files changed, 18 insertions, 1 deletions
diff --git a/django/contrib/admin/checks.py b/django/contrib/admin/checks.py index 10d33b06f8..dbbeb7fe9c 100644 --- a/django/contrib/admin/checks.py +++ b/django/contrib/admin/checks.py @@ -1130,7 +1130,7 @@ class ModelAdminChecks(BaseModelAdminChecks): id="admin.E124", ) ] - elif not field.editable: + elif not field.editable or field.primary_key: return [ checks.Error( "The value of '%s' refers to '%s', which is not editable " diff --git a/tests/admin_checks/tests.py b/tests/admin_checks/tests.py index aa87649dce..4d171ed737 100644 --- a/tests/admin_checks/tests.py +++ b/tests/admin_checks/tests.py @@ -363,6 +363,23 @@ class SystemChecksTestCase(SimpleTestCase): ] self.assertEqual(errors, expected) + def test_pk_not_editable(self): + # PKs cannot be edited in the list. + class SongAdmin(admin.ModelAdmin): + list_display = ["title", "id"] + list_editable = ["id"] + + errors = SongAdmin(Song, AdminSite()).check() + expected = [ + checks.Error( + "The value of 'list_editable[0]' refers to 'id', which is not editable " + "through the admin.", + obj=SongAdmin, + id="admin.E125", + ) + ] + self.assertEqual(errors, expected) + def test_editable(self): class SongAdmin(admin.ModelAdmin): list_display = ["pk", "title"] |
