Fixed #25609 -- Fixed regression in related field nested lookup error.

This commit is contained in:
Ian Foote 2015-10-25 23:29:34 +00:00 committed by Tim Graham
parent 976bd519a8
commit 32ef48aa56
2 changed files with 10 additions and 1 deletions

View File

@ -1172,7 +1172,10 @@ class Query(object):
if field.is_relation:
# No support for transforms for relational fields
assert len(lookups) == 1
num_lookups = len(lookups)
if num_lookups > 1:
raise FieldError('Related Field got invalid lookup: {}'.format(lookups[0]))
assert num_lookups > 0 # Likely a bug in Django if this fails.
lookup_class = field.get_lookup(lookups[0])
if len(targets) == 1:
lhs = targets[0].get_col(alias, field)

View File

@ -493,6 +493,12 @@ class LookupTests(TestCase):
str(ex), "Unsupported lookup 'starts' for CharField "
"or join on the field not permitted.")
def test_relation_nested_lookup_error(self):
# An invalid nested lookup on a related field raises a useful error.
msg = 'Related Field got invalid lookup: editor'
with self.assertRaisesMessage(FieldError, msg):
Article.objects.filter(author__editor__name='James')
def test_regex(self):
# Create some articles with a bit more interesting headlines for testing field lookups:
for a in Article.objects.all():