Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Fixed #7256 -- Corrected queryset code to return the correct set of c…

…olumns 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
  • Loading branch information...
commit 57311b5998900da5a320b9fde7605c834bc0db15 1 parent 0b8fafc
@freakboy3742 freakboy3742 authored
View
4 django/db/models/query.py
@@ -513,7 +513,9 @@ def __init__(self, *args, **kwargs):
# 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))
View
6 tests/regressiontests/queries/models.py
@@ -507,6 +507,12 @@ def __unicode__(self):
>>> [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)
Please sign in to comment.
Something went wrong with that request. Please try again.