'Returns a dictionary containing the calculations (aggregation)
over the current queryset
If args is present the expression is passed as a kwarg using
the Aggregate object\'s default alias.'

def aggregate(self, *args, **kwargs):

    if self.query.distinct_fields:
        raise NotImplementedError('aggregate()    +    distinct(fields)    not    implemented.')
    for arg in args:
        kwargs[arg.default_alias] = arg
    query = self.query.clone()
    for (alias, aggregate_expr) in kwargs.items():
        query.add_aggregate(aggregate_expr, self.model, alias, is_summary=True)
    return query.get_aggregation(using=self.db)
