我在Django
编写了一个应用程序,并在模型中使用了几个TimeFields
。我只想使用时间格式hh:mm(不是hh:mm:ss或hh p.m./a.m。或其他东西)。
我根据文档
TIME_FORMAT = 'H:i'
和USE_L10N = False
如果设置为USE_L10N
,则
TIME_FORMAT
会覆盖True
在我的模板中,我使用由Django自动创建的输入框,如:
{{formName.timeField}}
问题在于,只要我引入类似“10:00”的内容并执行POST
,当POST
完成时,Django(或其他)将其转换为“10:00: 00“(所以它增加秒数)。
|date:"H:i"
之类的东西来实现这一目的。另一方面,我知道我可以手动输入框(不是直接使用{{formName.timeField}}
),但过去我遇到了一些问题,所以我想避免这样做(至少对于那一刻)。
在Django TimeField Model without seconds中也有类似的问题,但解决方案不起作用(它给我'NoneType
'对象没有属性'strptime
')
答案 0 :(得分:22)
我在我的应用中遇到了这个问题,并通过将format
参数传递给Django的TimeInput
小部件来解决这个问题:
from django import forms
class SettingsForm(forms.Form):
delivery_time = forms.TimeField(widget=forms.TimeInput(format='%H:%M'))
答案 1 :(得分:11)
假设您希望所有TimeFields
都使用的格式,可以将TIME_INPUT_FORMATS
添加到您的设置文件中。例如,TIME_INPUT_FORMATS = ('%I:%M %p',)
会将您的时间格式设置为“下午5:30”。
文档:https://docs.djangoproject.com/en/dev/ref/settings/#std:setting-TIME_INPUT_FORMATS