diff options
| author | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2023-03-28 19:18:48 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-03-28 19:18:48 +0200 |
| commit | 3afdc9e9b47d5bdd1bd653633b4cb2357478ade5 (patch) | |
| tree | a415e56beb7dbc1ab692ea31f70eb6af9f9b8b54 | |
| parent | fcc7dc5781667932bf0bf8bec76df458836e5e95 (diff) | |
Refs #29799 -- Added field instance lookups to suggestions in FieldErrors.
Bug in cd1afd553f9c175ebccfc0f50e72b43b9604bd97.
| -rw-r--r-- | django/db/models/sql/query.py | 2 | ||||
| -rw-r--r-- | tests/lookup/tests.py | 14 |
2 files changed, 13 insertions, 3 deletions
diff --git a/django/db/models/sql/query.py b/django/db/models/sql/query.py index 3cb8bdbc8a..177bf6760d 100644 --- a/django/db/models/sql/query.py +++ b/django/db/models/sql/query.py @@ -1305,7 +1305,7 @@ class Query(BaseExpression): else: output_field = lhs.output_field.__class__ suggested_lookups = difflib.get_close_matches( - name, output_field.get_lookups() + name, lhs.output_field.get_lookups() ) if suggested_lookups: suggestion = ", perhaps you meant %s?" % " or ".join(suggested_lookups) diff --git a/tests/lookup/tests.py b/tests/lookup/tests.py index 9778eaa5c5..f0540b1451 100644 --- a/tests/lookup/tests.py +++ b/tests/lookup/tests.py @@ -19,7 +19,7 @@ from django.db.models import ( Value, When, ) -from django.db.models.functions import Cast, Substr +from django.db.models.functions import Cast, Length, Substr from django.db.models.lookups import ( Exact, GreaterThan, @@ -29,7 +29,7 @@ from django.db.models.lookups import ( LessThanOrEqual, ) from django.test import TestCase, skipUnlessDBFeature -from django.test.utils import isolate_apps +from django.test.utils import isolate_apps, register_lookup from .models import ( Article, @@ -813,6 +813,16 @@ class LookupTests(TestCase): ): Article.objects.filter(pub_date__gobbledygook="blahblah") + def test_unsupported_lookups_custom_lookups(self): + slug_field = Article._meta.get_field("slug") + msg = ( + "Unsupported lookup 'lengtp' for SlugField or join on the field not " + "permitted, perhaps you meant length?" + ) + with self.assertRaisesMessage(FieldError, msg): + with register_lookup(slug_field, Length): + Article.objects.filter(slug__lengtp=20) + def test_relation_nested_lookup_error(self): # An invalid nested lookup on a related field raises a useful error. msg = ( |
