summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--django/db/models/query.py2
-rw-r--r--django/db/models/sql/query.py2
-rw-r--r--tests/regressiontests/queries/models.py6
3 files changed, 8 insertions, 2 deletions
diff --git a/django/db/models/query.py b/django/db/models/query.py
index 25febd6d88..b2ed0d36a7 100644
--- a/django/db/models/query.py
+++ b/django/db/models/query.py
@@ -96,7 +96,7 @@ class _QuerySet(object):
else:
obj = self.model(*row[:index_end])
for i, k in enumerate(extra_select):
- setattr(obj, k[0], row[index_end + i])
+ setattr(obj, k, row[index_end + i])
yield obj
def count(self):
diff --git a/django/db/models/sql/query.py b/django/db/models/sql/query.py
index 5d96ec8020..3c0e342c86 100644
--- a/django/db/models/sql/query.py
+++ b/django/db/models/sql/query.py
@@ -342,7 +342,7 @@ class Query(object):
"""
qn = self.quote_name_unless_alias
result = []
- if self.select or self.extra_select:
+ if self.select:
for col in self.select:
if isinstance(col, (list, tuple)):
result.append('%s.%s' % (qn(col[0]), qn(col[1])))
diff --git a/tests/regressiontests/queries/models.py b/tests/regressiontests/queries/models.py
index d47792ecaa..3a80e2da61 100644
--- a/tests/regressiontests/queries/models.py
+++ b/tests/regressiontests/queries/models.py
@@ -310,6 +310,12 @@ Bug #2076
>>> Ranking.objects.extra(tables=['django_site'], order_by=['-django_site.id', 'rank'])
[<Ranking: 1: a3>, <Ranking: 2: a2>, <Ranking: 3: a1>]
+>>> qs = Ranking.objects.extra(select={'good': 'rank > 2'})
+>>> [o.good for o in qs.extra(order_by=('-good',))] == [True, False, False]
+True
+>>> qs.extra(order_by=('-good', 'id'))
+[<Ranking: 3: a1>, <Ranking: 2: a2>, <Ranking: 1: a3>]
+
Bugs #2874, #3002
>>> qs = Item.objects.select_related().order_by('note__note', 'name')
>>> list(qs)