mirror of
https://github.com/django/django.git
synced 2025-10-24 22:26:08 +00:00
Fixed #21554 -- Incorrect SQL generated when using multiple inheritance.
This commit is contained in:
@@ -284,25 +284,32 @@ class SQLCompiler(object):
|
||||
continue
|
||||
alias = self.query.join_parent_model(opts, model, start_alias,
|
||||
seen_models)
|
||||
column = field.column
|
||||
for seen_model, seen_alias in seen_models.items():
|
||||
if seen_model and seen_alias == alias:
|
||||
ancestor_link = seen_model._meta.get_ancestor_link(model)
|
||||
if ancestor_link:
|
||||
column = ancestor_link.column
|
||||
break
|
||||
table = self.query.alias_map[alias].table_name
|
||||
if table in only_load and field.column not in only_load[table]:
|
||||
if table in only_load and column not in only_load[table]:
|
||||
continue
|
||||
if as_pairs:
|
||||
result.append((alias, field.column))
|
||||
result.append((alias, column))
|
||||
aliases.add(alias)
|
||||
continue
|
||||
if with_aliases and field.column in col_aliases:
|
||||
if with_aliases and column in col_aliases:
|
||||
c_alias = 'Col%d' % len(col_aliases)
|
||||
result.append('%s.%s AS %s' % (qn(alias),
|
||||
qn2(field.column), c_alias))
|
||||
qn2(column), c_alias))
|
||||
col_aliases.add(c_alias)
|
||||
aliases.add(c_alias)
|
||||
else:
|
||||
r = '%s.%s' % (qn(alias), qn2(field.column))
|
||||
r = '%s.%s' % (qn(alias), qn2(column))
|
||||
result.append(r)
|
||||
aliases.add(r)
|
||||
if with_aliases:
|
||||
col_aliases.add(field.column)
|
||||
col_aliases.add(column)
|
||||
return result, aliases
|
||||
|
||||
def get_distinct(self):
|
||||
|
||||
Reference in New Issue
Block a user