, :
event_duration = models.IntegerField()
...
def __init__(self, *args, **kwargs):
super(Event, self).__init__(*args, **kwargs)
self.update_event_duration()
def save(self, **kwargs):
self.update_event_duration()
super(Event, self).save(*args, **kwargs)
: http://code.google.com/p/django-cube/, (, )
>>> def my_avg(queryset):
... return queryset.aggregate(Avg("event_duration"))["event_duration__avg"]
>>> c = Cube(["date_start__year", "type"], Event.objects.all(), my_avg)
:
>>> c.measure(date_start__year=1999, type=event_type2)
123.456
:
>>> c.measure_dict("date_start__year")
{1984: {'measure': 111.789}, 1985: {'measure': 234.666}, ...}
/ :
>>> c.measure_dict("date_start__year", "type")
{
1984: {eventtype1: {'measure': 111.789}, eventtype2: {'measure': 234.666}, ...},
1985: {eventtype1: {'measure': 122.79}, eventtype2: {'measure': 233.444}, ...},
...
}