diff --git a/django/db/models/query.py b/django/db/models/query.py index 04a1c513f6..aa2034919c 100644 --- a/django/db/models/query.py +++ b/django/db/models/query.py @@ -280,8 +280,8 @@ class QuerySet(object): for row in self.query.results_iter(): if fill_cache: - obj, aggregate_start = get_cached_row(self.model, row, - index_start, max_depth, requested=requested) + obj, _ = get_cached_row(self.model, row, + index_start, max_depth, requested=requested) else: # omit aggregates in object creation obj = self.model(*row[index_start:aggregate_start]) diff --git a/django/db/models/sql/query.py b/django/db/models/sql/query.py index 4e46da6424..bf664c606e 100644 --- a/django/db/models/sql/query.py +++ b/django/db/models/sql/query.py @@ -698,7 +698,7 @@ class BaseQuery(object): """ qn = self.quote_name_unless_alias result = [] - for col in self.group_by: + for col in self.group_by + self.related_select_cols: if isinstance(col, (list, tuple)): result.append('%s.%s' % (qn(col[0]), qn(col[1]))) elif hasattr(col, 'as_sql'): diff --git a/tests/regressiontests/aggregation_regress/models.py b/tests/regressiontests/aggregation_regress/models.py index d7dd7617e6..3e5f873472 100644 --- a/tests/regressiontests/aggregation_regress/models.py +++ b/tests/regressiontests/aggregation_regress/models.py @@ -194,6 +194,11 @@ FieldError: Cannot resolve keyword 'foo' into field. Choices are: authors, id, i >>> Book.objects.annotate(num_authors=Count('authors')).order_by('publisher__name', 'name') [, , , , , ] +# Regression for #10127 - Empty select_related() works with annotate +>>> books = Book.objects.all().filter(rating__lt=4.5).select_related().annotate(Avg('authors__age')) +>>> sorted([(b.name, b.authors__age__avg) for b in books]) +[(u'Artificial Intelligence: A Modern Approach', 51.5), (u'Practical Django Projects', 29.0), (u'Python Web Development with Django', 30.3...), (u'Sams Teach Yourself Django in 24 Hours', 45.0)] + """ }