diff --git a/django/contrib/gis/db/models/sql/compiler.py b/django/contrib/gis/db/models/sql/compiler.py index 405a000f42..9a4ea6a942 100644 --- a/django/contrib/gis/db/models/sql/compiler.py +++ b/django/contrib/gis/db/models/sql/compiler.py @@ -171,10 +171,6 @@ class GeoSQLCompiler(compiler.SQLCompiler): """ values = [] aliases = self.query.extra_select.keys() - if self.query.aggregates: - # If we have an aggregate annotation, must extend the aliases - # so their corresponding row values are included. - aliases.extend([None for i in xrange(len(self.query.aggregates))]) # Have to set a starting row number offset that is used for # determining the correct starting row index -- needed for diff --git a/django/contrib/gis/tests/relatedapp/tests.py b/django/contrib/gis/tests/relatedapp/tests.py index 685700e9ae..9ef090b901 100644 --- a/django/contrib/gis/tests/relatedapp/tests.py +++ b/django/contrib/gis/tests/relatedapp/tests.py @@ -245,6 +245,13 @@ class RelatedGeoModelTest(TestCase): self.assertEqual(1, len(vqs)) self.assertEqual(3, vqs[0]['num_books']) + def test13c_count(self): + "Testing `Count` aggregate with `.values()`. See #15305." + qs = Location.objects.filter(id=5).annotate(num_cities=Count('city')).values('id', 'point', 'num_cities') + self.assertEqual(1, len(qs)) + self.assertEqual(2, qs[0]['num_cities']) + self.assertTrue(isinstance(qs[0]['point'], GEOSGeometry)) + # TODO: The phantom model does appear on Oracle. @no_oracle def test13_select_related_null_fk(self): @@ -284,7 +291,7 @@ class RelatedGeoModelTest(TestCase): def test16_annotated_date_queryset(self): "Ensure annotated date querysets work if spatial backend is used. See #14648." - birth_years = [dt.year for dt in + birth_years = [dt.year for dt in list(Author.objects.annotate(num_books=Count('books')).dates('dob', 'year'))] birth_years.sort() self.assertEqual([1950, 1974], birth_years)