1
0
mirror of https://github.com/django/django.git synced 2024-12-22 17:16:24 +00:00

Refs #29799 -- Added field instance lookups to suggestions in FieldErrors.

Bug in cd1afd553f.
This commit is contained in:
Mariusz Felisiak 2023-03-28 19:18:48 +02:00 committed by GitHub
parent fcc7dc5781
commit 3afdc9e9b4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 13 additions and 3 deletions

View File

@ -1305,7 +1305,7 @@ class Query(BaseExpression):
else: else:
output_field = lhs.output_field.__class__ output_field = lhs.output_field.__class__
suggested_lookups = difflib.get_close_matches( suggested_lookups = difflib.get_close_matches(
name, output_field.get_lookups() name, lhs.output_field.get_lookups()
) )
if suggested_lookups: if suggested_lookups:
suggestion = ", perhaps you meant %s?" % " or ".join(suggested_lookups) suggestion = ", perhaps you meant %s?" % " or ".join(suggested_lookups)

View File

@ -19,7 +19,7 @@ from django.db.models import (
Value, Value,
When, When,
) )
from django.db.models.functions import Cast, Substr from django.db.models.functions import Cast, Length, Substr
from django.db.models.lookups import ( from django.db.models.lookups import (
Exact, Exact,
GreaterThan, GreaterThan,
@ -29,7 +29,7 @@ from django.db.models.lookups import (
LessThanOrEqual, LessThanOrEqual,
) )
from django.test import TestCase, skipUnlessDBFeature 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 ( from .models import (
Article, Article,
@ -813,6 +813,16 @@ class LookupTests(TestCase):
): ):
Article.objects.filter(pub_date__gobbledygook="blahblah") 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): def test_relation_nested_lookup_error(self):
# An invalid nested lookup on a related field raises a useful error. # An invalid nested lookup on a related field raises a useful error.
msg = ( msg = (