Django管理后台额外字段Sum()时间字段
在Django的后台管理系统中,我想显示所有操作持续时间的总和。我通过添加一个额外的字段解决了这个问题。但是,
比如说,
01:30:00 小时
03:45:00 小时
这些时间加起来却变成了47500.0,因为求和的时候把时间转换成了整数。
我按照这里的描述修改了我的admin.py: django-admin: 添加总计的额外行
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()函数?我觉得我需要把时间值转换成浮点数或整数,求和后再转换回来。
有什么建议吗?
非常感谢。
1 个回答
3
我猜你在使用MySQL。它有一个关于时间相加的老问题(我不知道现在是否修复了)。
你可以把持续时间存储为分钟(或者如果可以的话,存储为15分钟)。或者你也可以使用django-durationfield。