Django模板中的TimeField格式

19
我正在使用Django编写一个应用程序,并在模型中使用多个TimeFields。我只想使用hh:mm的时间格式(不是hh:mm:ss或hh p.m./a.m.或其他格式)。 根据文档,我已经设置了django设置TIME_FORMAT = 'H:i'和USE_L10N = False。
引用: USE_L10N如果设置为True,则覆盖TIME_FORMAT
在我的模板中,我正在使用Django自动创建的输入框,例如:
{{formName.timeField}}

问题在于,只要我输入类似于“10:00”的内容并进行POST,当POST完成时Django(或其他)会将其转换为“10:00:00”(因此它添加了秒数)。
  • 有没有办法指定日期时间字段显示保存日期的格式?如果我可以在输入框的值中使用类似于|date:“H:i”的东西就可以解决问题。

另一方面,我知道我可以手动处理输入框(而不是直接使用{{formName.timeField}}),但我过去曾遇到过一些问题,所以我想避免这种情况(至少暂时如此)。

还有一个类似的问题在Django TimeField Model without seconds中,但解决方案不起作用(它给我返回'NoneType' object has no attribute 'strptime')

2个回答

29

我在我的应用程序中也遇到了这个问题,通过将format参数传递给Django的TimeInput小部件来解决了这个问题:

from django import forms

class SettingsForm(forms.Form):
    delivery_time = forms.TimeField(widget=forms.TimeInput(format='%H:%M'))

10
请注意,对于将来的读者,TimeInput部件的format参数仅控制字段的初始值输出格式,而不控制字段的输入验证。要进行输入验证格式,请使用TimeFieldinput_formats参数。 - Ghopper21

12

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接