Попробуйте это,
from django.db.models.sql.aggregates import Aggregate
from django.db.models import Count
class Day(Aggregate):
"""Custom aggregator
"""
sql_function = 'DATE'
sql_template = "%(function)s(%(field)s)"
def __init__(self, lookup, **extra):
self.lookup = lookup
self.extra = extra
def _default_alias(self):
return '%s__%s' % (self.lookup, self.__class__.__name__.lower())
default_alias = property(_default_alias)
def add_to_query(self, query, alias, col, source, is_summary):
super(Day, self).__init__(col, source, is_summary, **self.extra)
query.aggregate_select[alias] = self
q = Point.objects.annotate(day=Day('time')).annotate(found=Count('time')).values('day', 'found')
# custom group by
q.query.group_by = ["day"]
print q
# should return something like
[{'found': 6, 'day': datetime.date(2010, 4, 30)},
{'found': 4, 'day': datetime.date(2010, 5, 1)},
{'found': 3, 'day': datetime.date(2010, 5, 2)}]
Согласно этому сообщению приведенный выше код, вероятно, будет работать только с базой данных MySql.