From 4cee764a4621c210bd1ddbc2b4b7d29c09ce8de5 Mon Sep 17 00:00:00 2001 From: Alex Gaynor Date: Wed, 26 Jan 2011 03:52:41 +0000 Subject: [PATCH] [1.2.X] Fixed #13159 -- properly quote aggregates in order_by. Backport of [15318]. git-svn-id: http://code.djangoproject.com/svn/django/branches/releases/1.2.X@15319 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- django/db/models/sql/compiler.py | 2 +- tests/regressiontests/aggregation_regress/tests.py | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/django/db/models/sql/compiler.py b/django/db/models/sql/compiler.py index d464061f95..fb9674c366 100644 --- a/django/db/models/sql/compiler.py +++ b/django/db/models/sql/compiler.py @@ -327,7 +327,7 @@ class SQLCompiler(object): continue col, order = get_order_dir(field, asc) if col in self.query.aggregate_select: - result.append('%s %s' % (col, order)) + result.append('%s %s' % (qn(col), order)) continue if '.' in field: # This came in through an extra(order_by=...) addition. Pass it diff --git a/tests/regressiontests/aggregation_regress/tests.py b/tests/regressiontests/aggregation_regress/tests.py index 822785b7a5..44c79c36c1 100644 --- a/tests/regressiontests/aggregation_regress/tests.py +++ b/tests/regressiontests/aggregation_regress/tests.py @@ -768,6 +768,18 @@ class AggregationTests(TestCase): attrgetter("name") ) + def test_quoting_aggregate_order_by(self): + qs = Book.objects.filter( + name="Python Web Development with Django" + ).annotate( + authorCount=Count("authors") + ).order_by("authorCount") + self.assertQuerysetEqual( + qs, [ + ("Python Web Development with Django", 3), + ], + lambda b: (b.name, b.authorCount) + ) if run_stddev_tests(): def test_stddev(self):