Loading django/db/models/query.py +14 −9 Original line number Diff line number Diff line Loading @@ -264,11 +264,14 @@ class QuerySet(object): init_list.append(field.attname) model_cls = deferred_class_factory(self.model, skip) compiler = self.query.get_compiler(using=self.db) # Cache db and model outside the loop db = self.db model = self.model compiler = self.query.get_compiler(using=db) for row in compiler.results_iter(): if fill_cache: obj, _ = get_cached_row(self.model, row, index_start, using=self.db, max_depth=max_depth, obj, _ = get_cached_row(model, row, index_start, using=db, max_depth=max_depth, requested=requested, offset=len(aggregate_select), only_load=only_load) else: Loading @@ -278,17 +281,19 @@ class QuerySet(object): obj = model_cls(**dict(zip(init_list, row_data))) else: # Omit aggregates in object creation. obj = self.model(*row[index_start:aggregate_start]) obj = model(*row[index_start:aggregate_start]) # Store the source database of the object obj._state.db = self.db obj._state.db = db # This object came from the database; it's not being added. obj._state.adding = False if extra_select: for i, k in enumerate(extra_select): setattr(obj, k, row[i]) # Add the aggregates to the model if aggregate_select: for i, aggregate in enumerate(aggregate_select): setattr(obj, aggregate, row[i+aggregate_start]) Loading django/db/models/sql/compiler.py +2 −1 Original line number Diff line number Diff line Loading @@ -669,6 +669,7 @@ class SQLCompiler(object): """ resolve_columns = hasattr(self, 'resolve_columns') fields = None has_aggregate_select = bool(self.query.aggregate_select) for rows in self.execute_sql(MULTI): for row in rows: if resolve_columns: Loading @@ -689,7 +690,7 @@ class SQLCompiler(object): f.column in only_load[db_table]] row = self.resolve_columns(row, fields) if self.query.aggregate_select: if has_aggregate_select: aggregate_start = len(self.query.extra_select.keys()) + len(self.query.select) aggregate_end = aggregate_start + len(self.query.aggregate_select) row = tuple(row[:aggregate_start]) + tuple([ Loading Loading
django/db/models/query.py +14 −9 Original line number Diff line number Diff line Loading @@ -264,11 +264,14 @@ class QuerySet(object): init_list.append(field.attname) model_cls = deferred_class_factory(self.model, skip) compiler = self.query.get_compiler(using=self.db) # Cache db and model outside the loop db = self.db model = self.model compiler = self.query.get_compiler(using=db) for row in compiler.results_iter(): if fill_cache: obj, _ = get_cached_row(self.model, row, index_start, using=self.db, max_depth=max_depth, obj, _ = get_cached_row(model, row, index_start, using=db, max_depth=max_depth, requested=requested, offset=len(aggregate_select), only_load=only_load) else: Loading @@ -278,17 +281,19 @@ class QuerySet(object): obj = model_cls(**dict(zip(init_list, row_data))) else: # Omit aggregates in object creation. obj = self.model(*row[index_start:aggregate_start]) obj = model(*row[index_start:aggregate_start]) # Store the source database of the object obj._state.db = self.db obj._state.db = db # This object came from the database; it's not being added. obj._state.adding = False if extra_select: for i, k in enumerate(extra_select): setattr(obj, k, row[i]) # Add the aggregates to the model if aggregate_select: for i, aggregate in enumerate(aggregate_select): setattr(obj, aggregate, row[i+aggregate_start]) Loading
django/db/models/sql/compiler.py +2 −1 Original line number Diff line number Diff line Loading @@ -669,6 +669,7 @@ class SQLCompiler(object): """ resolve_columns = hasattr(self, 'resolve_columns') fields = None has_aggregate_select = bool(self.query.aggregate_select) for rows in self.execute_sql(MULTI): for row in rows: if resolve_columns: Loading @@ -689,7 +690,7 @@ class SQLCompiler(object): f.column in only_load[db_table]] row = self.resolve_columns(row, fields) if self.query.aggregate_select: if has_aggregate_select: aggregate_start = len(self.query.extra_select.keys()) + len(self.query.select) aggregate_end = aggregate_start + len(self.query.aggregate_select) row = tuple(row[:aggregate_start]) + tuple([ Loading