[3.0.x] Fixed #31538 -- Fixed Meta.ordering validation lookups that are not transforms.
Regression in440505cb2c
. Thanks Simon Meers for the report. Backport ofb73e66e758
from master
This commit is contained in:
parent
883362b6a7
commit
fdd5eb4309
|
@ -1719,7 +1719,9 @@ class Model(metaclass=ModelBase):
|
|||
else:
|
||||
_cls = None
|
||||
except (FieldDoesNotExist, AttributeError):
|
||||
if fld is None or fld.get_transform(part) is None:
|
||||
if fld is None or (
|
||||
fld.get_transform(part) is None and fld.get_lookup(part) is None
|
||||
):
|
||||
errors.append(
|
||||
checks.Error(
|
||||
"'ordering' refers to the nonexistent field, "
|
||||
|
|
|
@ -9,4 +9,5 @@ Django 3.0.7 fixes several bugs in 3.0.6.
|
|||
Bugfixes
|
||||
========
|
||||
|
||||
* ...
|
||||
* Fixed a regression in Django 3.0 by restoring the ability to use field
|
||||
lookups in ``Meta.ordering`` (:ticket:`31538`).
|
||||
|
|
|
@ -844,6 +844,15 @@ class OtherModelTests(SimpleTestCase):
|
|||
with register_lookup(models.CharField, Lower):
|
||||
self.assertEqual(Model.check(), [])
|
||||
|
||||
def test_ordering_pointing_to_lookup_not_transform(self):
|
||||
class Model(models.Model):
|
||||
test = models.CharField(max_length=100)
|
||||
|
||||
class Meta:
|
||||
ordering = ('test__isnull',)
|
||||
|
||||
self.assertEqual(Model.check(), [])
|
||||
|
||||
def test_ordering_pointing_to_related_model_pk(self):
|
||||
class Parent(models.Model):
|
||||
pass
|
||||
|
|
Loading…
Reference in New Issue