Changeset 5768
- Timestamp:
- 07/27/07 17:07:42 (1 year ago)
- Files:
-
- django/trunk/django/db/models/query.py (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
django/trunk/django/db/models/query.py
r5609 r5768 580 580 raise StopIteration 581 581 582 # self._fields is a list of field names to fetch. 582 # self._select is a dictionary, and dictionaries' key order is 583 # undefined, so we convert it to a list of tuples. 584 extra_select = self._select.items() 585 586 # Construct two objects -- fields and field_names. 587 # fields is a list of Field objects to fetch. 588 # field_names is a list of field names, which will be the keys in the 589 # resulting dictionaries. 583 590 if self._fields: 584 if not self._select:591 if not extra_select: 585 592 fields = [self.model._meta.get_field(f, many_to_many=False) for f in self._fields] 593 field_names = self._fields 586 594 else: 587 595 fields = [] 596 field_names = [] 588 597 for f in self._fields: 589 598 if f in [field.name for field in self.model._meta.fields]: 590 599 fields.append(self.model._meta.get_field(f, many_to_many=False)) 591 elif not self._select.has_key( f ): 592 raise FieldDoesNotExist, '%s has no field named %r' % ( self.model._meta.object_name, f ) 593 594 field_names = self._fields 600 field_names.append(f) 601 elif not self._select.has_key(f): 602 raise FieldDoesNotExist('%s has no field named %r' % (self.model._meta.object_name, f)) 595 603 else: # Default to all fields. 596 604 fields = self.model._meta.fields … … 599 607 columns = [f.column for f in fields] 600 608 select = ['%s.%s' % (backend.quote_name(self.model._meta.db_table), backend.quote_name(c)) for c in columns] 601 # Add any additional SELECTs.602 if self._select:603 select.extend(['(%s) AS %s' % (quote_only_if_word(s[1]), backend.quote_name(s[0])) for s in self._select.items()])609 if extra_select: 610 select.extend(['(%s) AS %s' % (quote_only_if_word(s[1]), backend.quote_name(s[0])) for s in extra_select]) 611 field_names.extend([f[0] for f in extra_select]) 604 612 605 613 cursor = connection.cursor()
