在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,然后将总和再转换回来。
有什么建议吗?
非常感谢。
答案 0 :(得分:2)
我想你正在使用MySQL。总计时间old bug(我不知道它现在是否已修复)。
您可以以分钟为单位存储持续时间(如果没有,则可以存储15分钟)。或者您可以使用django-durationfield。