diff options
| author | wookkl <wjddnr315@gmail.com> | 2024-07-07 16:17:58 +0900 |
|---|---|---|
| committer | Sarah Boyce <42296566+sarahboyce@users.noreply.github.com> | 2024-07-09 09:15:38 +0200 |
| commit | 759abc4dafef6860edb830c30754e6364ed9ea11 (patch) | |
| tree | 11416e6f4d7dc4b0bb665247f81fa145361c4007 /django/db/models/sql | |
| parent | 2c931fda5b341e0febf68269d2c2447a64875127 (diff) | |
Fixed #35413 -- Made unsupported lookup error message more specific.
Diffstat (limited to 'django/db/models/sql')
| -rw-r--r-- | django/db/models/sql/query.py | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/django/db/models/sql/query.py b/django/db/models/sql/query.py index 438bb5ddbd..f00eb1e5a5 100644 --- a/django/db/models/sql/query.py +++ b/django/db/models/sql/query.py @@ -1367,7 +1367,7 @@ class Query(BaseExpression): # __exact is the default lookup if one isn't given. *transforms, lookup_name = lookups or ["exact"] for name in transforms: - lhs = self.try_transform(lhs, name) + lhs = self.try_transform(lhs, name, lookups) # First try get_lookup() so that the lookup takes precedence if the lhs # supports both transform and lookup for the name. lookup_class = lhs.get_lookup(lookup_name) @@ -1401,7 +1401,7 @@ class Query(BaseExpression): return lookup - def try_transform(self, lhs, name): + def try_transform(self, lhs, name, lookups=None): """ Helper method for build_lookup(). Try to fetch and initialize a transform for name parameter from lhs. @@ -1418,9 +1418,14 @@ class Query(BaseExpression): suggestion = ", perhaps you meant %s?" % " or ".join(suggested_lookups) else: suggestion = "." + if lookups is not None: + name_index = lookups.index(name) + unsupported_lookup = LOOKUP_SEP.join(lookups[name_index:]) + else: + unsupported_lookup = name raise FieldError( "Unsupported lookup '%s' for %s or join on the field not " - "permitted%s" % (name, output_field.__name__, suggestion) + "permitted%s" % (unsupported_lookup, output_field.__name__, suggestion) ) def build_filter( |
