diff options
| author | Ran Benita <ran234@gmail.com> | 2017-12-23 11:35:08 +0200 |
|---|---|---|
| committer | Tim Graham <timograham@gmail.com> | 2017-12-26 11:41:17 -0500 |
| commit | c21f158295d92e35caf96436bfdbbff554fc5569 (patch) | |
| tree | cca717940ef8c52d3d70e5070c90f0be23ceb136 /django | |
| parent | 5778b5701d6a0feb3053b70891cd8ce80b6e8601 (diff) | |
Fixed #28944 -- Fixed crash when chaining values()/values_list() after QuerySet.select_for_update(of=()).
Diffstat (limited to 'django')
| -rw-r--r-- | django/db/models/sql/compiler.py | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/django/db/models/sql/compiler.py b/django/db/models/sql/compiler.py index 7930d223f1..ddbcb0eb9a 100644 --- a/django/db/models/sql/compiler.py +++ b/django/db/models/sql/compiler.py @@ -190,7 +190,7 @@ class SQLCompiler: "AS alias" for the column (possibly None). The klass_info structure contains the following information: - - Which model to instantiate + - The base model of the query. - Which columns for that model are present in the query (by position of the select clause). - related_klass_infos: [f, klass_info] to descent into @@ -207,20 +207,21 @@ class SQLCompiler: select_idx += 1 assert not (self.query.select and self.query.default_cols) if self.query.default_cols: + cols = self.get_default_columns() + else: + # self.query.select is a special case. These columns never go to + # any model. + cols = self.query.select + if cols: select_list = [] - for c in self.get_default_columns(): + for col in cols: select_list.append(select_idx) - select.append((c, None)) + select.append((col, None)) select_idx += 1 klass_info = { 'model': self.query.model, 'select_fields': select_list, } - # self.query.select is a special case. These columns never go to - # any model. - for col in self.query.select: - select.append((col, None)) - select_idx += 1 for alias, annotation in self.query.annotation_select.items(): annotations[alias] = select_idx select.append((annotation, alias)) |
