summaryrefslogtreecommitdiff
path: root/django/db/models/sql/query.py
diff options
context:
space:
mode:
authorAlexander Holmbäck <alexande.holmback@creuna.se>2018-09-06 20:10:20 +0000
committerTim Graham <timograham@gmail.com>2018-09-08 09:40:33 -0400
commitf315d0423a09dfe20dd4d4f6a0eb11fc8e45a665 (patch)
treea9aba4c1f452986f91c7c01e15fc30ac81e60387 /django/db/models/sql/query.py
parentaa16ec54747eaa9da7534e67a1de320b9a517c1c (diff)
Fixed #29727 -- Made nonexistent joins in F() raise FieldError.
Regression in 2162f0983de0dfe2178531638ce7ea56f54dd4e7.
Diffstat (limited to 'django/db/models/sql/query.py')
-rw-r--r--django/db/models/sql/query.py5
1 files changed, 4 insertions, 1 deletions
diff --git a/django/db/models/sql/query.py b/django/db/models/sql/query.py
index 74eec72291..81f6f196d3 100644
--- a/django/db/models/sql/query.py
+++ b/django/db/models/sql/query.py
@@ -1594,10 +1594,13 @@ class Query:
else:
field_list = name.split(LOOKUP_SEP)
join_info = self.setup_joins(field_list, self.get_meta(), self.get_initial_alias(), can_reuse=reuse)
- targets, _, join_list = self.trim_joins(join_info.targets, join_info.joins, join_info.path)
+ targets, final_alias, join_list = self.trim_joins(join_info.targets, join_info.joins, join_info.path)
if len(targets) > 1:
raise FieldError("Referencing multicolumn fields with F() objects "
"isn't supported")
+ # Verify that the last lookup in name is a field or a transform:
+ # transform_function() raises FieldError if not.
+ join_info.transform_function(targets[0], final_alias)
if reuse is not None:
reuse.update(join_list)
col = _get_col(targets[0], join_info.targets[0], join_list[-1], simple_col)