Skip to content

Commit 84d4daa

Browse files
committed
fix issue avidal#14
1 parent 54ec7c9 commit 84d4daa

File tree

1 file changed

+21
-4
lines changed

1 file changed

+21
-4
lines changed

django_pyodbc/aggregates.py

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,37 @@
1-
from django.db.models.sql.aggregates import *
1+
from django.db.models.sql.aggregates import Aggregate
22

3-
class StdDev(Aggregate):
3+
class _Aggregate(Aggregate):
4+
5+
def __init__(self, lookup, **extra):
6+
self.lookup = lookup
7+
self.extra = extra
8+
9+
def _default_alias(self):
10+
return '%s__%s' % (self.lookup, self.__class__.__name__.lower())
11+
default_alias = property(_default_alias)
12+
13+
def add_to_query(self, query, alias, col, source, is_summary):
14+
super(_Aggregate, self).__init__(col, source, is_summary, **self.extra)
15+
query.aggregates[alias] = self
16+
17+
class StdDev(_Aggregate):
18+
name = 'StdDev'
419
is_computed = True
520

621
def __init__(self, col, sample=False, **extra):
722
super(StdDev, self).__init__(col, **extra)
823
self.sql_function = sample and 'STDEV' or 'STDEVP'
924

10-
class Variance(Aggregate):
25+
class Variance(_Aggregate):
26+
name = 'Variance'
1127
is_computed = True
1228

1329
def __init__(self, col, sample=False, **extra):
1430
super(Variance, self).__init__(col, **extra)
1531
self.sql_function = sample and 'VAR' or 'VARP'
1632

17-
class Avg(Aggregate):
33+
class Avg(_Aggregate):
34+
name = 'Avg'
1835
is_computed = True
1936
sql_function = 'AVG'
2037
sql_template = '%(function)s(Convert(FLOAT, %(field)s))'

0 commit comments

Comments
 (0)