summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIan Foote <python@ian.feete.org>2015-10-25 23:29:34 +0000
committerTim Graham <timograham@gmail.com>2015-10-27 13:49:00 -0400
commit32ef48aa562e6aaee9983f5d0f1c60f02fd555fb (patch)
tree8b3b136b8eb7745d3ca431dd0a0cd59a96ba76bf
parent976bd519a879b2fd7a356cb21bde32696adb545f (diff)
Fixed #25609 -- Fixed regression in related field nested lookup error.
-rw-r--r--django/db/models/sql/query.py5
-rw-r--r--tests/lookup/tests.py6
2 files changed, 10 insertions, 1 deletions
diff --git a/django/db/models/sql/query.py b/django/db/models/sql/query.py
index cb1696dd62..0686bf8875 100644
--- a/django/db/models/sql/query.py
+++ b/django/db/models/sql/query.py
@@ -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)
diff --git a/tests/lookup/tests.py b/tests/lookup/tests.py
index 70a94c96cb..7e9f0921f8 100644
--- a/tests/lookup/tests.py
+++ b/tests/lookup/tests.py
@@ -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():