summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--django/db/models/sql/compiler.py3
-rw-r--r--tests/queries/tests.py20
2 files changed, 22 insertions, 1 deletions
diff --git a/django/db/models/sql/compiler.py b/django/db/models/sql/compiler.py
index 6792824ecd..d8697fa06d 100644
--- a/django/db/models/sql/compiler.py
+++ b/django/db/models/sql/compiler.py
@@ -117,7 +117,7 @@ class SQLCompiler(object):
if self.query.distinct:
result.append(self.connection.ops.distinct_sql(distinct_fields))
- params.extend(o_params)
+
result.append(', '.join(out_cols + self.ordering_aliases))
params.extend(s_params)
params.extend(self.ordering_params)
@@ -146,6 +146,7 @@ class SQLCompiler(object):
if ordering:
result.append('ORDER BY %s' % ', '.join(ordering))
+ params.extend(o_params)
if with_limits:
if self.query.high_mark is not None:
diff --git a/tests/queries/tests.py b/tests/queries/tests.py
index 60d1083879..0fff68b21f 100644
--- a/tests/queries/tests.py
+++ b/tests/queries/tests.py
@@ -2129,6 +2129,26 @@ class ValuesQuerysetTests(BaseQuerysetTest):
order_by=['value_minus_one'])
qs = qs.values('num')
+ def test_extra_select_params_values_order_in_extra(self):
+ # testing for 23259 issue
+ qs = Number.objects.extra(
+ select={'value_plus_x': 'num+%s'},
+ select_params=[1],
+ order_by=['value_plus_x'])
+ qs = qs.filter(num=72)
+ qs = qs.values('num')
+ self.assertQuerysetEqual(qs, [{'num': 72}], self.identity)
+
+ def test_extra_multiple_select_params_values_order_by(self):
+ # testing for 23259 issue
+ qs = Number.objects.extra(select=OrderedDict([('value_plus_x', 'num+%s'),
+ ('value_minus_x', 'num-%s')]),
+ select_params=(72, 72))
+ qs = qs.order_by('value_minus_x')
+ qs = qs.filter(num=1)
+ qs = qs.values('num')
+ self.assertQuerysetEqual(qs, [], self.identity)
+
def test_extra_values_list(self):
# testing for ticket 14930 issues
qs = Number.objects.extra(select={'value_plus_one': 'num+1'})