在django admin中更改Duration字段的格式 [英] Change format for Duration field in django admin

查看:160
本文介绍了在django admin中更改Duration字段的格式的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在模型中使用 django DurationField 来计算两个 DateTimeField 。

I'm using django DurationField in a model to calculate the time difference between two DateTimeField.

在该模型的管理网站上,该字段显示如下:

On the admin site for that model, the field shows up like this:

# short duration
Cumulative Total time:   0:51:33
# longer duration
Cumulative Total time:   2 days, 3:10:21

是否可以将此字段的格式更改为以下给定格式?

Is it possible to change the format for this field to the below given format?

Cumulative Total time:   2 days, 3 hours, 10 minutes, 21 seconds


推荐答案

DurationField 具有与格式相关的以下代码:

The DurationField has the following code that relates to formatting:

...
from django.utils.duration import duration_string
...

class DurationField(Field):
    ...
    def value_to_string(self, obj):
        val = self.value_from_object(obj)
        return '' if val is None else duration_string(val)

和函数 duration_string 看起来像这样:

def duration_string(duration):
    """Version of str(timedelta) which is not English specific."""
    days, hours, minutes, seconds, microseconds = _get_duration_components(duration)

    string = '{:02d}:{:02d}:{:02d}'.format(hours, minutes, seconds)
    if days:
        string = '{} '.format(days) + string
    if microseconds:
        string += '.{:06d}'.format(microseconds)

    return string






一种解决方案是创建自定义字段来覆盖上面列出的一种方法:


One solution is to create your custom field that overrides the one method listed above:

from django.utils.duration import _get_duration_components

class CustomDurationField(DurationField):
    def value_to_string(self, obj):
        val = self.value_from_object(obj)
        if val is None:
            return ''

        days, hours, minutes, seconds, microseconds = _get_duration_components(val)
        return '{} days, {:02d} hours, {:02d} minutes, {:02d}.{:06d} seconds'.format(
            days, hours, minutes, seconds, microseconds)

您需要调整精确的输出以符合您的要求。

You would need to tweak the exact output to fit your requirements.

这篇关于在django admin中更改Duration字段的格式的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆