Fixed #26229 -- Improved check for model admin check admin.E124
Refs #22792
This commit is contained in:
parent
0223e213dd
commit
65bd053f11
|
@ -806,10 +806,10 @@ class ModelAdminChecks(BaseModelAdminChecks):
|
||||||
id='admin.E123',
|
id='admin.E123',
|
||||||
)
|
)
|
||||||
]
|
]
|
||||||
# Check that list_display_links is set, and that the first values of list_editable and list_display are
|
# If list_display[0] is in list_editable, check that
|
||||||
# not the same. See ticket #22792 for the use case relating to this.
|
# list_display_links is set. See #22792 and #26229 for use cases.
|
||||||
elif (obj.list_display[0] in obj.list_editable and obj.list_display[0] != obj.list_editable[0] and
|
elif (obj.list_display[0] == field_name and not obj.list_display_links
|
||||||
obj.list_display_links is not None):
|
and obj.list_display_links is not None):
|
||||||
return [
|
return [
|
||||||
checks.Error(
|
checks.Error(
|
||||||
"The value of '%s' refers to the first field in 'list_display' ('%s'), "
|
"The value of '%s' refers to the first field in 'list_display' ('%s'), "
|
||||||
|
|
|
@ -1553,10 +1553,10 @@ class ListDisplayEditableTests(CheckTestCase):
|
||||||
list_display_links = None
|
list_display_links = None
|
||||||
self.assertIsValid(ProductAdmin, ValidationTestModel)
|
self.assertIsValid(ProductAdmin, ValidationTestModel)
|
||||||
|
|
||||||
def test_list_display_same_as_list_editable(self):
|
def test_list_display_first_item_same_as_list_editable_first_item(self):
|
||||||
"""
|
"""
|
||||||
The first item in list_display can be the same as the first
|
The first item in list_display can be the same as the first in
|
||||||
in list_editable
|
list_editable.
|
||||||
"""
|
"""
|
||||||
class ProductAdmin(ModelAdmin):
|
class ProductAdmin(ModelAdmin):
|
||||||
list_display = ['name', 'slug', 'pub_date']
|
list_display = ['name', 'slug', 'pub_date']
|
||||||
|
@ -1564,6 +1564,49 @@ class ListDisplayEditableTests(CheckTestCase):
|
||||||
list_display_links = ['pub_date']
|
list_display_links = ['pub_date']
|
||||||
self.assertIsValid(ProductAdmin, ValidationTestModel)
|
self.assertIsValid(ProductAdmin, ValidationTestModel)
|
||||||
|
|
||||||
|
def test_list_display_first_item_in_list_editable(self):
|
||||||
|
"""
|
||||||
|
The first item in list_display can be in list_editable as long as
|
||||||
|
list_display_links is defined.
|
||||||
|
"""
|
||||||
|
class ProductAdmin(ModelAdmin):
|
||||||
|
list_display = ['name', 'slug', 'pub_date']
|
||||||
|
list_editable = ['slug', 'name']
|
||||||
|
list_display_links = ['pub_date']
|
||||||
|
self.assertIsValid(ProductAdmin, ValidationTestModel)
|
||||||
|
|
||||||
|
def test_list_display_first_item_same_as_list_editable_no_list_display_links(self):
|
||||||
|
"""
|
||||||
|
The first item in list_display cannot be the same as the first item
|
||||||
|
in list_editable if list_display_links is not defined.
|
||||||
|
"""
|
||||||
|
class ProductAdmin(ModelAdmin):
|
||||||
|
list_display = ['name']
|
||||||
|
list_editable = ['name']
|
||||||
|
self.assertIsInvalid(
|
||||||
|
ProductAdmin, ValidationTestModel,
|
||||||
|
"The value of 'list_editable[0]' refers to the first field "
|
||||||
|
"in 'list_display' ('name'), which cannot be used unless "
|
||||||
|
"'list_display_links' is set.",
|
||||||
|
id='admin.E124',
|
||||||
|
)
|
||||||
|
|
||||||
|
def test_list_display_first_item_in_list_editable_no_list_display_links(self):
|
||||||
|
"""
|
||||||
|
The first item in list_display cannot be in list_editable if
|
||||||
|
list_display_links isn't defined.
|
||||||
|
"""
|
||||||
|
class ProductAdmin(ModelAdmin):
|
||||||
|
list_display = ['name', 'slug', 'pub_date']
|
||||||
|
list_editable = ['slug', 'name']
|
||||||
|
self.assertIsInvalid(
|
||||||
|
ProductAdmin, ValidationTestModel,
|
||||||
|
"The value of 'list_editable[1]' refers to the first field "
|
||||||
|
"in 'list_display' ('name'), which cannot be used unless "
|
||||||
|
"'list_display_links' is set.",
|
||||||
|
id='admin.E124',
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class ModelAdminPermissionTests(SimpleTestCase):
|
class ModelAdminPermissionTests(SimpleTestCase):
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue