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 = (