From 76b3fc5c8d8dffb441aaa08f75833888be2107af Mon Sep 17 00:00:00 2001 From: Vyacheslav Ver Date: Thu, 16 May 2019 19:12:17 +0300 Subject: [PATCH] Fixed #30486 -- Fixed the default value of Aggregate.distinct and updated example of custom aggregate functions. --- 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 bb88f27b46..fe7aecfbc0 100644 --- a/docs/ref/models/expressions.txt +++ b/docs/ref/models/expressions.txt @@ -379,7 +379,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 @@ -442,20 +442,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 -----------------------