summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Manfre <mmanfre@gmail.com>2013-09-23 20:52:58 -0400
committerTim Graham <timograham@gmail.com>2013-09-24 10:10:08 -0400
commit9a041807fcde7ff7245696a743196d31ec7c7b5c (patch)
tree6d6ded8c685d6976198b72fd2c218b5e052c6733
parent77f6b468e5b3a389b3e56e1e1f70a56e8a0a68fa (diff)
Fixed #18333 - Quoted annotated column names
-rw-r--r--django/db/models/sql/aggregates.py2
-rw-r--r--tests/aggregation_regress/tests.py10
2 files changed, 11 insertions, 1 deletions
diff --git a/django/db/models/sql/aggregates.py b/django/db/models/sql/aggregates.py
index 3cda4d244e..0e1794e0a9 100644
--- a/django/db/models/sql/aggregates.py
+++ b/django/db/models/sql/aggregates.py
@@ -79,7 +79,7 @@ class Aggregate(object):
elif isinstance(self.col, (list, tuple)):
field_name = '.'.join(qn(c) for c in self.col)
else:
- field_name = self.col
+ field_name = qn(self.col)
substitutions = {
'function': self.sql_function,
diff --git a/tests/aggregation_regress/tests.py b/tests/aggregation_regress/tests.py
index b8ec14d1dc..741e2ed734 100644
--- a/tests/aggregation_regress/tests.py
+++ b/tests/aggregation_regress/tests.py
@@ -1114,3 +1114,13 @@ class AggregationTests(TestCase):
self.assertQuerysetEqual(
qs, ['Sams Teach Yourself Django in 24 Hours'],
lambda b: b.name)
+
+ def test_annotate_reserved_word(self):
+ """
+ Regression #18333 - Ensure annotated column name is properly quoted.
+ """
+ vals = Book.objects.annotate(select=Count('authors__id')).aggregate(Sum('select'), Avg('select'))
+ self.assertEqual(vals, {
+ 'select__sum': 10,
+ 'select__avg': Approximate(1.666, places=2),
+ })