mirror of
https://github.com/django/django.git
synced 2024-12-22 17:16:24 +00:00
Fixed #34481 -- Added system check for reverse related fields in ModelAdmin.list_display.
This commit is contained in:
parent
83c9765f45
commit
c813fb327c
@ -916,10 +916,13 @@ class ModelAdminChecks(BaseModelAdminChecks):
|
||||
id="admin.E108",
|
||||
)
|
||||
]
|
||||
if isinstance(field, models.ManyToManyField):
|
||||
if isinstance(field, models.ManyToManyField) or (
|
||||
getattr(field, "rel", None) and field.rel.field.many_to_one
|
||||
):
|
||||
return [
|
||||
checks.Error(
|
||||
"The value of '%s' must not be a ManyToManyField." % label,
|
||||
f"The value of '{label}' must not be a many-to-many field or a "
|
||||
f"reverse foreign key.",
|
||||
obj=obj.__class__,
|
||||
id="admin.E109",
|
||||
)
|
||||
|
@ -703,8 +703,8 @@ with the admin site:
|
||||
* **admin.E108**: The value of ``list_display[n]`` refers to ``<label>``,
|
||||
which is not a callable, an attribute of ``<ModelAdmin class>``, or an
|
||||
attribute or method on ``<model>``.
|
||||
* **admin.E109**: The value of ``list_display[n]`` must not be a
|
||||
``ManyToManyField`` field.
|
||||
* **admin.E109**: The value of ``list_display[n]`` must not be a many-to-many
|
||||
field or a reverse foreign key.
|
||||
* **admin.E110**: The value of ``list_display_links`` must be a list, a tuple,
|
||||
or ``None``.
|
||||
* **admin.E111**: The value of ``list_display_links[n]`` refers to ``<label>``,
|
||||
|
@ -537,7 +537,20 @@ class ListDisplayTests(CheckTestCase):
|
||||
self.assertIsInvalid(
|
||||
TestModelAdmin,
|
||||
ValidationTestModel,
|
||||
"The value of 'list_display[0]' must not be a ManyToManyField.",
|
||||
"The value of 'list_display[0]' must not be a many-to-many field or a "
|
||||
"reverse foreign key.",
|
||||
"admin.E109",
|
||||
)
|
||||
|
||||
def test_invalid_reverse_related_field(self):
|
||||
class TestModelAdmin(ModelAdmin):
|
||||
list_display = ["song_set"]
|
||||
|
||||
self.assertIsInvalid(
|
||||
TestModelAdmin,
|
||||
Band,
|
||||
"The value of 'list_display[0]' must not be a many-to-many field or a "
|
||||
"reverse foreign key.",
|
||||
"admin.E109",
|
||||
)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user