Django不让节省时间在小时:分钟甲酸



我正试图用这种格式"13:21"节省时间。但是django不让我这么做,并给出了这个例外

["'13 : 53' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] format."]

我的领域是

duration = models.TimeField(null=True , blank=True)

我的setting.py

TIME_INPUT_FORMATS = ('%H:%M',)

要使事情正常工作,只需将此格式添加到格式中即可。

TIME_INPUT_FORMATS = ('%H : %M', '%H:%M')

正如你所看到的,空格也被计算为字符,例如,你想只用空格格式化时间-这可能只是bo做这个

TIME_INPUT_FORMATS = ('%H %M',)

与其更改后端,不如更改前端并以正确的格式发送数据,但如果您想在后端处理此问题,您可以覆盖模型保存方法并清除duration空格:

def save(self, *args, **kwargs):
if isinstance(self.duration, str):
self.duration = self.duration.replace(' ', '')
super().save(*args, **kwargs)

只要您传递带有字符串值的duration,这将起作用,在其他情况下,您可以使用datetime.datetime.strptime(),如:

import datetime
time_string = '13 : 53'
time = datetime.datetime.strptime(time_string, '%H : %M').time()

在将数据传递到模型之前,这也可能发生在任何地方(甚至在API中(。

最新更新