From 36766e1a28632f87eedc532c4bc9a5a1c1c8a380 Mon Sep 17 00:00:00 2001
From: Vyacheslav Ver <vvvyacheslav23@gmail.com>
Date: Thu, 16 May 2019 19:12:17 +0300
Subject: [PATCH] [2.2.x] Fixed #30486 -- Fixed the default value of
 Aggregate.distinct and updated example of custom aggregate functions.

Backport of 76b3fc5c8d8dffb441aaa08f75833888be2107af from master
---
 docs/ref/models/expressions.txt | 17 ++++++++---------
 1 file changed, 8 insertions(+), 9 deletions(-)

diff --git a/docs/ref/models/expressions.txt b/docs/ref/models/expressions.txt
index 460a7f70d4..a26e918e70 100644
--- a/docs/ref/models/expressions.txt
+++ b/docs/ref/models/expressions.txt
@@ -381,7 +381,7 @@ The ``Aggregate`` API is as follows:
 
         A class attribute, as a format string, that describes the SQL that is
         generated for this aggregate. Defaults to
-        ``'%(function)s( %(expressions)s )'``.
+        ``'%(function)s(%(distinct)s%(expressions)s)'``.
 
     .. attribute:: function
 
@@ -444,20 +444,19 @@ SQL that is generated. Here's a brief example::
 
     from django.db.models import Aggregate
 
-    class Count(Aggregate):
-        # supports COUNT(distinct field)
-        function = 'COUNT'
-        template = '%(function)s(%(distinct)s%(expressions)s)'
+    class Sum(Aggregate):
+        # Supports SUM(ALL field).
+        function = 'SUM'
+        template = '%(function)s(%(all_values)s%(expressions)s)'
+        allow_distinct = False
 
-        def __init__(self, expression, distinct=False, **extra):
+        def __init__(self, expression, all_values=False, **extra):
             super().__init__(
                 expression,
-                distinct='DISTINCT ' if distinct else '',
-                output_field=IntegerField(),
+                all_values='ALL ' if all_values else '',
                 **extra
             )
 
-
 ``Value()`` expressions
 -----------------------