Я опробую функции агрегации и получаю странные результаты (последний официальный релиз Django 1.2).
Вот модель:
class Reputation(models.Model):
user = models.ForeignKey(User)
modifier = models.IntegerField()
activity = models.ForeignKey(Activity)
Вот что я получаю:
In [37]: Reputation.objects.aggregate(r=Sum('modifier'))
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
C:\Data\Development\django_projects\oko\lib\site-packages\django\db\models\manager.pyc in aggregate(self, *args, **kwargs)
142
143 def aggregate(self, *args, **kwargs):
--> 144 return self.get_query_set().aggregate(*args, **kwargs)
145
146 def annotate(self, *args, **kwargs):
C:\Data\Development\django_projects\oko\lib\site-packages\django\db\models\query.pyc in aggregate(self, *args, **kwargs)
315 for (alias, aggregate_expr) in kwargs.items():
316 query.add_aggregate(aggregate_expr, self.model, alias,
--> 317 is_summary=True)
318
319 return query.get_aggregation(using=self.db)
C:\Data\Development\django_projects\oko\lib\site-packages\django\db\models\sql\query.pyc in add_aggregate(self, aggregate, model, alias, is_summary)
929 """
930 opts = model._meta
--> 931 field_list = aggregate.lookup.split(LOOKUP_SEP)
932 if len(field_list) == 1 and aggregate.lookup in self.aggregates:
933 # Aggregate is over an annotation
AttributeError: 'Sum' object has no attribute 'lookup'