In Django Admin i want to display the sum of all action durations. I solved it wirh an extra field. But the sum of
01:30:00 h 03:45:00 h
are summed to 47500,0 because sum converts times to integer.
I changed my admin.py like it is described here: django-admin: Add extra row with totals
class MyChangeList(ChangeList):
def get_results(self, *args, **kwargs):
super(MyChangeList, self).get_results(*args, **kwargs)
q = self.result_list.aggregate(status_sum=Sum('duration'))
self.status_count = q['action_sum']
...
class ActionAdmin(admin.ModelAdmin):
def get_changelist(self, request):
return MyChangeList
class Meta:
model = Status
list_display = ('name', 'duration')
Duration is defienes as TimeField in modles.py:
class Action (models.Model):
duration = models.TimeField()
Somebody knows how to change aggregate() function in MyChangeList ? I think i have to change time values to float or integer, make the sum and then convert it back.
Any suggestion?
Thanks a lot.
class MyChangeList(ChangeList): ... q = self.result_list.aggregate(status_sum=Sum('duration')) self.status_count = timedelta(microseconds=q['action_sum'])
Now it works ;-) – surfi Jan 16 '12 at 12:36