2012-01-16 17 views
3

Django Adminでは、すべてのアクション期間の合計を表示します。私は余分なフィールドwirhそれを解決した。合計は整数倍に変換するので、しかしDjango admin extraフィールドSum()TimeField

午前一時30分00秒H 午前3時45分00秒H

の和が47500,0に加算されます。

それがここで説明されたように私は私の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としてdefienesです:

class Action (models.Model): 

    duration = models.TimeField() 

誰かが集計を変更する方法を知っていますMyChangeListの()関数ですか? 私は浮動小数点数または整数に時間値を変更して、合計を作り、それを元に戻す必要があると思います。

提案がありますか?

ありがとうございます。

答えて

2

MySQLを使用しているとします。合計時間にはold bugがあります(今修正されているかどうかはわかりません)。

期間は分単位で保存できます(確認の場合は15分単位)。または、django-durationfieldを使用できます。

+0

私はMysqlを使用しています。私はあなたが言及したmysqlのバグだと思う。 ありがとうございます** django-durationfield **をインストールして、MyChangeListの最後の2行を次のように変更しました: class MyChangeList(ChangeList): ... q = self.result_list.aggregate(status_sum=Sum('duration')) self.status_count = timedelta(microseconds=q['action_sum']) これで動作します;-) – surfi