Changeset 7469
- Timestamp:
- 04/26/08 06:20:42 (3 months ago)
- Files:
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
django/branches/queryset-refactor/django/db/models/sql/query.py
r7467 r7469 55 55 self.ordering_aliases = [] 56 56 self.start_meta = None 57 self.select_fields = [] 58 self.related_select_fields = [] 57 59 58 60 # SQL-related attributes … … 143 145 obj.ordering_aliases = [] 144 146 obj.start_meta = self.start_meta 147 obj.select_fields = self.select_fields[:] 148 obj.related_select_fields = self.related_select_fields[:] 145 149 obj.select = self.select[:] 146 150 obj.tables = self.tables[:] … … 170 174 Returns an iterator over the results from executing this query. 171 175 """ 172 fields = self.model._meta.fields173 176 resolve_columns = hasattr(self, 'resolve_columns') 177 if resolve_columns: 178 if self.select_fields: 179 fields = self.select_fields + self.related_select_fields 180 else: 181 fields = self.model._meta.fields 174 182 for rows in self.execute_sql(MULTI): 175 183 for row in rows: … … 188 196 obj.select_related = False 189 197 obj.related_select_cols = [] 198 obj.related_select_fields = [] 190 199 if obj.distinct and len(obj.select) > 1: 191 200 obj = self.clone(CountQuery, _query=obj, where=self.where_class(), … … 200 209 201 210 # Apply offset and limit constraints manually, since using LIMIT/OFFSET 202 # in SQL doesn't change the COUNT output. 211 # in SQL (in variants that provide them) doesn't change the COUNT 212 # output. 203 213 number = max(0, number - self.low_mark) 204 214 if self.high_mark: … … 334 344 item.relabel_aliases(change_map) 335 345 self.select.append(item) 346 self.select_fields = rhs.select_fields[:] 336 347 self.extra_select = rhs.extra_select.copy() 337 348 self.extra_tables = rhs.extra_tables … … 836 847 root_alias = self.get_initial_alias() 837 848 self.related_select_cols = [] 849 self.related_select_fields = [] 838 850 if not used: 839 851 used = set() … … 870 882 self.related_select_cols.extend([(alias, f2.column) 871 883 for f2 in f.rel.to._meta.fields]) 884 self.related_select_fields.extend(f.rel.to._meta.fields) 872 885 if restricted: 873 886 next = requested.get(f.name, {}) … … 1238 1251 try: 1239 1252 for name in field_names: 1240 u1, target, u2, joins, u3 = self.setup_joins(1253 field, target, u2, joins, u3 = self.setup_joins( 1241 1254 name.split(LOOKUP_SEP), opts, alias, False, allow_m2m, 1242 1255 True) … … 1255 1268 self.promote_alias(join) 1256 1269 self.select.append((final_alias, col)) 1270 self.select_fields.append(field) 1257 1271 except MultiJoin: 1258 1272 raise FieldError("Invalid field name: '%s'" % name) … … 1323 1337 self.distinct = False 1324 1338 self.select = [select] 1339 self.select_fields = [None] 1325 1340 self.extra_select = {} 1326 1341 self.extra_select_params = () … … 1339 1354 self.select_related = field_dict 1340 1355 self.related_select_cols = [] 1356 self.related_select_fields = [] 1341 1357 1342 1358 def add_extra(self, select, select_params, where, params, tables, order_by): … … 1391 1407 alias = joins[last[-1]] 1392 1408 self.select = [(alias, self.alias_map[alias][RHS_JOIN_COL])] 1409 self.select_fields = [field] 1393 1410 self.start_meta = opts 1394 1411 django/branches/queryset-refactor/django/db/models/sql/subqueries.py
r7468 r7469 349 349 self.connection.ops.date_trunc_sql) 350 350 self.select = [select] 351 self.select_fields = [None] 351 352 self.distinct = True 352 353 self.order_by = order == 'ASC' and [1] or [-1]
