diff options
| author | Anssi Kääriäinen <akaariai@gmail.com> | 2013-11-17 15:50:14 +0200 |
|---|---|---|
| committer | Anssi Kääriäinen <akaariai@gmail.com> | 2014-02-04 15:21:13 +0200 |
| commit | 0f272629ca18e440aef67b4a3fd9377a57fb25a8 (patch) | |
| tree | f9126aa889153f77e32a4c0dbdf255088fc04b72 /django/db/models/sql | |
| parent | 5f42c0219550b62e62db6e0f3834671a994e3cd8 (diff) | |
[1.6.x] Fixed #21413 -- resolve_columns fields misalignment
Backpatch of 9918c11114ac3ec9622631558ef26ebf3919cb69 from master.
Conflicts:
django/db/models/sql/compiler.py
tests/model_inheritance_regress/tests.py
Diffstat (limited to 'django/db/models/sql')
| -rw-r--r-- | django/db/models/sql/compiler.py | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/django/db/models/sql/compiler.py b/django/db/models/sql/compiler.py index a3e7de3788..0ab53ecc71 100644 --- a/django/db/models/sql/compiler.py +++ b/django/db/models/sql/compiler.py @@ -289,7 +289,7 @@ class SQLCompiler(object): if table in only_load and field.column not in only_load[table]: continue if as_pairs: - result.append((alias, field.column)) + result.append((alias, field)) aliases.add(alias) continue if with_aliases and field.column in col_aliases: @@ -650,10 +650,10 @@ class SQLCompiler(object): _, _, _, joins, _ = self.query.setup_joins( [f.name], opts, root_alias, outer_if_first=promote) alias = joins[-1] - columns, aliases = self.get_default_columns(start_alias=alias, + columns, _ = self.get_default_columns(start_alias=alias, opts=f.rel.to._meta, as_pairs=True) self.query.related_select_cols.extend( - SelectInfo(col, field) for col, field in zip(columns, f.rel.to._meta.concrete_fields)) + SelectInfo((col[0], col[1].column), col[1]) for col in columns) if restricted: next = requested.get(f.name, {}) else: @@ -678,11 +678,10 @@ class SQLCompiler(object): alias = joins[-1] from_parent = (opts.model if issubclass(model, opts.model) else None) - columns, aliases = self.get_default_columns(start_alias=alias, + columns, _ = self.get_default_columns(start_alias=alias, opts=model._meta, as_pairs=True, from_parent=from_parent) self.query.related_select_cols.extend( - SelectInfo(col, field) for col, field - in zip(columns, model._meta.concrete_fields)) + SelectInfo((col[0], col[1].column), col[1]) for col in columns) next = requested.get(f.related_query_name(), {}) # Use True here because we are looking at the _reverse_ side of # the relation, which is always nullable. @@ -728,8 +727,10 @@ class SQLCompiler(object): # found in get_columns(). It would be nice to clean this up. if self.query.select: fields = [f.field for f in self.query.select] - else: + elif self.query.default_cols: fields = self.query.get_meta().concrete_fields + else: + fields = [] fields = fields + [f.field for f in self.query.related_select_cols] # If the field was deferred, exclude it from being passed |
