gpt4 book ai didi

django - 更改 django 管理中持续时间字段的格式

转载 作者:行者123 更新时间:2023-12-03 23:15:30 29 4
gpt4 key购买 nike

我正在使用 django DurationField在一个模型中计算两个 DateTimeField 之间的时间差.

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

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

是否可以将此字段的格式更改为以下给定格式?
Cumulative Total time:   2 days, 3 hours, 10 minutes, 21 seconds

最佳答案

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

...
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

一种解决方案是创建覆盖上面列出的一种方法的自定义字段:
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)

您需要调整确切的输出以满足您的要求。

关于django - 更改 django 管理中持续时间字段的格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51770572/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com