summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMariusz Felisiak <felisiak.mariusz@gmail.com>2023-03-28 19:18:48 +0200
committerGitHub <noreply@github.com>2023-03-28 19:18:48 +0200
commit3afdc9e9b47d5bdd1bd653633b4cb2357478ade5 (patch)
treea415e56beb7dbc1ab692ea31f70eb6af9f9b8b54
parentfcc7dc5781667932bf0bf8bec76df458836e5e95 (diff)
Refs #29799 -- Added field instance lookups to suggestions in FieldErrors.
Bug in cd1afd553f9c175ebccfc0f50e72b43b9604bd97.
-rw-r--r--django/db/models/sql/query.py2
-rw-r--r--tests/lookup/tests.py14
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 = (