Meh*_*hak 4 django django-models django-admin
我django DurationField在模型中使用来计算两个DateTimeField.
在该模型的管理站点上,该字段显示如下:
# short duration
Cumulative Total time: 0:51:33
# longer duration
Cumulative Total time: 2 days, 3:10:21
Run Code Online (Sandbox Code Playgroud)
是否可以将此字段的格式更改为以下给定格式?
Cumulative Total time: 2 days, 3 hours, 10 minutes, 21 seconds
Run Code Online (Sandbox Code Playgroud)
在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)
Run Code Online (Sandbox Code Playgroud)
该函数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
Run Code Online (Sandbox Code Playgroud)
一种解决方案是创建覆盖上面列出的一种方法的自定义字段:
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)
Run Code Online (Sandbox Code Playgroud)
您需要调整确切的输出以满足您的要求。
| 归档时间: |
|
| 查看次数: |
3661 次 |
| 最近记录: |