Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Made sure join_field is always available in .join()

Refs #19385
  • Loading branch information...
commit 9ef3cab40b1806d99172e94954976413f860a476 1 parent a04df80
@akaariai akaariai authored
View
7 django/db/models/sql/compiler.py
@@ -636,10 +636,10 @@ def fill_related_selections(self, opts=None, root_alias=None, cur_depth=1,
int_opts = int_model._meta
continue
lhs_col = int_opts.parents[int_model].column
+ link_field = int_opts.get_ancestor_link(int_model)
int_opts = int_model._meta
alias = self.query.join((alias, int_opts.db_table, lhs_col,
- int_opts.pk.column),
- promote=promote)
+ int_opts.pk.column), promote=promote, join_field=link_field)
alias_chain.append(alias)
else:
alias = root_alias
@@ -685,10 +685,11 @@ def fill_related_selections(self, opts=None, root_alias=None, cur_depth=1,
int_opts = int_model._meta
continue
lhs_col = int_opts.parents[int_model].column
+ link_field = int_opts.get_ancestor_link(int_model)
int_opts = int_model._meta
alias = self.query.join(
(alias, int_opts.db_table, lhs_col, int_opts.pk.column),
- promote=True
+ promote=True, join_field=link_field
)
alias_chain.append(alias)
alias = self.query.join(
View
6 django/db/models/sql/query.py
@@ -944,6 +944,7 @@ def join(self, connection, reuse=None, promote=False,
The 'join_field' is the field we are joining along (if any).
"""
lhs, table, lhs_col, col = connection
+ assert lhs is None or join_field is not None
existing = self.join_map.get(connection, ())
if reuse is None:
reuse = existing
@@ -1003,8 +1004,9 @@ def setup_inherited_models(self):
for field, model in opts.get_fields_with_model():
if model not in seen:
link_field = opts.get_ancestor_link(model)
- seen[model] = self.join((root_alias, model._meta.db_table,
- link_field.column, model._meta.pk.column))
+ seen[model] = self.join(
+ (root_alias, model._meta.db_table, link_field.column,
+ model._meta.pk.column), join_field=link_field)
self.included_inherited_models = seen
def remove_inherited_models(self):
Please sign in to comment.
Something went wrong with that request. Please try again.