Changeset 7446
- Timestamp:
- 04/23/08 04:53:22 (3 months ago)
- Files:
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
django/branches/queryset-refactor/django/db/models/query.py
r7437 r7446 558 558 class ValuesListQuerySet(ValuesQuerySet): 559 559 def iterator(self): 560 self. field_names.extend([f for f in self.query.extra_select.keys()])560 self.query.trim_extra_select(self.extra_names) 561 561 if self.flat and len(self._fields) == 1: 562 562 for row in self.query.results_iter(): 563 563 yield row[0] 564 el se:564 elif not self.query.extra_select: 565 565 for row in self.query.results_iter(): 566 566 yield row 567 else: 568 # When extra(select=...) is involved, the extra cols come are 569 # always at the start of the row, so we need to reorder the fields 570 # to match the order in self._fields. 571 names = self.query.extra_select.keys() + self.field_names 572 for row in self.query.results_iter(): 573 data = dict(zip(names, row)) 574 yield tuple([data[f] for f in self._fields]) 567 575 568 576 def _clone(self, *args, **kwargs): django/branches/queryset-refactor/tests/modeltests/lookup/models.py
r7343 r7446 181 181 [1, 2, 3, 4, 5, 6, 7] 182 182 183 >>> Article.objects.extra(select={'id_plus_one': 'id+1'}).order_by('id').valueslist('id') 184 [(1,), (2,), (3,), (4,), (5,), (6,), (7,)] 185 >>> Article.objects.extra(select={'id_plus_one': 'id+1'}).order_by('id').valueslist('id_plus_one', 'id') 186 [(2, 1), (3, 2), (4, 3), (5, 4), (6, 5), (7, 6), (8, 7)] 187 >>> Article.objects.extra(select={'id_plus_one': 'id+1'}).order_by('id').valueslist('id', 'id_plus_one') 188 [(1, 2), (2, 3), (3, 4), (4, 5), (5, 6), (6, 7), (7, 8)] 189 183 190 >>> Article.objects.valueslist('id', 'headline', flat=True) 184 191 Traceback (most recent call last):
