mirror of
https://github.com/django/django.git
synced 2025-10-24 06:06:09 +00:00
Refs #29428 -- Fixed admin check crash when using a query expression in ModelAdmin.ordering.
This commit is contained in:
@@ -3,6 +3,8 @@ from django.contrib.admin import BooleanFieldListFilter, SimpleListFilter
|
||||
from django.contrib.admin.options import VERTICAL, ModelAdmin, TabularInline
|
||||
from django.contrib.admin.sites import AdminSite
|
||||
from django.core.checks import Error
|
||||
from django.db.models import F
|
||||
from django.db.models.functions import Upper
|
||||
from django.forms.models import BaseModelFormSet
|
||||
from django.test import SimpleTestCase
|
||||
|
||||
@@ -829,6 +831,23 @@ class OrderingCheckTests(CheckTestCase):
|
||||
|
||||
self.assertIsValid(TestModelAdmin, ValidationTestModel)
|
||||
|
||||
def test_invalid_expression(self):
|
||||
class TestModelAdmin(ModelAdmin):
|
||||
ordering = (F('nonexistent'), )
|
||||
|
||||
self.assertIsInvalid(
|
||||
TestModelAdmin, ValidationTestModel,
|
||||
"The value of 'ordering[0]' refers to 'nonexistent', which is not "
|
||||
"an attribute of 'modeladmin.ValidationTestModel'.",
|
||||
'admin.E033'
|
||||
)
|
||||
|
||||
def test_valid_expression(self):
|
||||
class TestModelAdmin(ModelAdmin):
|
||||
ordering = (Upper('name'), Upper('band__name').desc())
|
||||
|
||||
self.assertIsValid(TestModelAdmin, ValidationTestModel)
|
||||
|
||||
|
||||
class ListSelectRelatedCheckTests(CheckTestCase):
|
||||
|
||||
|
||||
Reference in New Issue
Block a user