Django管理额外字段Sum()TimeField

时间:2012-01-16 11:23:37

标签: python django time django-admin sum

在Django Admin中,我想显示所有动作持续时间的总和。我解决了一个额外的领域。但总和

01:30:00 h 03:45:00 h

总计为47500,0因为sum将时间转换为整数。

我改变了我的admin.py,如下所述: 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')

持续时间定义为modles.py中的TimeField:

class Action (models.Model):

    duration = models.TimeField() 

有人知道如何在MyChangeList中更改aggregate()函数吗? 我想我必须将时间值更改为float或integer,然后将总和再转换回来。

有什么建议吗?

非常感谢。

1 个答案:

答案 0 :(得分:2)

我想你正在使用MySQL。总计时间old bug(我不知道它现在是否已修复)。

您可以以分钟为单位存储持续时间(如果没有,则可以存储15分钟)。或者您可以使用django-durationfield