格式以将值保存在Django的DurationField中

时间:2018-10-04 06:18:14

标签: django django-models

我找不到如何在AdminPanel中设置“持续时间字段”的值

  

让我们说我想将该值设置为1年

因此,后者我可以获取DurationField值并将其添加到datetime.datetime.now()

我只想知道我必须以哪种格式在AdminPanel的Duration字段中添加值。

我知道有一种方法my_model.duration = datetime.timedelta(days=20, hours=10)

  

但是对于我来说,管理员必须从管理面板中增加价值!!!因此,在将其标记为重复问题之前,请花一些时间来理解问题

1 个答案:

答案 0 :(得分:0)

对于持续时间字段,您需要以DD HH:MM:SS.uuuuuu格式输入持续时间,其中uuuuuu是微秒。在一年中,您需要输入365 0'365 0:0:0.000000'365 0:0:0(还有其他可能的组合)。不要仅输入365,它会认为是365秒零0天。

>>> parse_duration('365')
datetime.timedelta(0, 365)

Django内部使用parse_durationdjango.utils.dateparse.parse_duration)函数将字符串转换为datetime.timedelta

如果您不确定在管理面板的工期字段中输入内容时将保存什么实际时间增量,请打开您喜欢的代码编辑器并检查您打算输入的值:

>>> from django.utils.dateparse import parse_duration
>>> parse_duration('365 0')
datetime.timedelta(365)
>>> parse_duration('1 1:12:45.8979')
datetime.timedelta(1, 4365, 897900)