From 7934695a0fcab621f7edb4accf0465c532f4d73d Mon Sep 17 00:00:00 2001 From: Tim Graham Date: Wed, 27 Apr 2016 14:49:29 -0400 Subject: [PATCH] [1.8.x] Refs #25136 -- Fixed nonexistent field reference in aggregation topic guide. Thanks Ankush Thakur for the report and Simon for the review. Backport of fe70f280d7ea4402f676696c4013c4a23d4e4990 from master --- docs/topics/db/aggregation.txt | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/docs/topics/db/aggregation.txt b/docs/topics/db/aggregation.txt index f3618e4303..cdf79503d6 100644 --- a/docs/topics/db/aggregation.txt +++ b/docs/topics/db/aggregation.txt @@ -194,24 +194,25 @@ results `_, as multiple tables are cross joined. Due to the use of ``LEFT OUTER JOIN``, duplicate records will be generated if some of the joined tables contain more records than the others: - >>> Book.objects.first().authors.count() + >>> book = Book.objects.first() + >>> book.authors.count() 2 - >>> Book.objects.first().chapters.count() + >>> book.store_set.count() 3 - >>> q = Book.objects.annotate(Count('authors'), Count('chapters')) + >>> q = Book.objects.annotate(Count('authors'), Count('store')) >>> q[0].authors__count 6 - >>> q[0].chapters__count + >>> q[0].store__count 6 For most aggregates, there is no way to avoid this problem, however, the :class:`~django.db.models.Count` aggregate has a ``distinct`` parameter that may help: - >>> q = Book.objects.annotate(Count('authors', distinct=True), Count('chapters', distinct=True)) + >>> q = Book.objects.annotate(Count('authors', distinct=True), Count('store', distinct=True)) >>> q[0].authors__count 2 - >>> q[0].chapters__count + >>> q[0].store__count 3 .. admonition:: If in doubt, inspect the SQL query!