diff options
| author | Tai Lee <tai.lee@3030.com.au> | 2013-05-30 08:16:09 +0300 |
|---|---|---|
| committer | Anssi Kääriäinen <akaariai@gmail.com> | 2013-05-30 08:46:31 +0300 |
| commit | 69f7db153d8108dcef033207d49f4c80febf3d70 (patch) | |
| tree | eaf02fe0d6f851d46d6123015e373bb240f0b0e4 /django | |
| parent | bb80d2976bdf785a0cedd52945c8f3f55a20ace5 (diff) | |
Fixed #16436 -- defer + annotate + select_related crash
Correctly calculate the ``aggregate_start`` offset from loaded fields,
if any are deferred, instead of ``self.query.select`` which includes all
fields on the model.
Also made some PEP 8 fixes.
Diffstat (limited to 'django')
| -rw-r--r-- | django/db/models/sql/compiler.py | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/django/db/models/sql/compiler.py b/django/db/models/sql/compiler.py index 0180f6b6cc..0bfd1b38d3 100644 --- a/django/db/models/sql/compiler.py +++ b/django/db/models/sql/compiler.py @@ -729,7 +729,8 @@ class SQLCompiler(object): row = self.resolve_columns(row, fields) if has_aggregate_select: - aggregate_start = len(self.query.extra_select) + len(self.query.select) + loaded_fields = self.query.get_loaded_field_names().get(self.query.model, set()) or self.query.select + aggregate_start = len(self.query.extra_select) + len(loaded_fields) aggregate_end = aggregate_start + len(self.query.aggregate_select) row = tuple(row[:aggregate_start]) + tuple([ self.query.resolve_aggregate(value, aggregate, self.connection) |
