Fixed #7256 -- Corrected queryset code to return the correct set of columns when the query has an empty values() clause as well as extra selects from an extra() clause. Thanks to Nicolas Lara for the report and patch.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@7636 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
0b8fafc7f1
commit
57311b5998
|
@ -513,7 +513,9 @@ class ValuesQuerySet(QuerySet):
|
|||
# names of the model fields to select.
|
||||
|
||||
def iterator(self):
|
||||
self.query.trim_extra_select(self.extra_names)
|
||||
if (not self.extra_names and
|
||||
len(self.field_names) != len(self.model._meta.fields)):
|
||||
self.query.trim_extra_select(self.extra_names)
|
||||
names = self.query.extra_select.keys() + self.field_names
|
||||
for row in self.query.results_iter():
|
||||
yield dict(zip(names, row))
|
||||
|
|
|
@ -507,6 +507,12 @@ True
|
|||
>>> [sorted(d.items()) for d in dicts]
|
||||
[[('id', 1), ('rank', 2)], [('id', 2), ('rank', 1)], [('id', 3), ('rank', 3)]]
|
||||
|
||||
Bug #7256
|
||||
# An empty values() call includes all aliases, including those from an extra()
|
||||
>>> dicts = qs.values().order_by('id')
|
||||
>>> [sorted(d.items()) for d in dicts]
|
||||
[[('author_id', 2), ('good', 0), ('id', 1), ('rank', 2)], [('author_id', 3), ('good', 0), ('id', 2), ('rank', 1)], [('author_id', 1), ('good', 1), ('id', 3), ('rank', 3)]]
|
||||
|
||||
Bugs #2874, #3002
|
||||
>>> qs = Item.objects.select_related().order_by('note__note', 'name')
|
||||
>>> list(qs)
|
||||
|
|
Loading…
Reference in New Issue