我希望用户能够使用我的django timefield在上午和下午之间进行选择
目前,如果我输入:
上午11:00
,我收到表单错误:"输入有效时间。"
如果我输入:
11:00
表单验证没有问题。
我也尝试过:
class RemindersForm(forms.ModelForm):
remdinder = forms.TimeField(input_formats='%H:%M %p',)
class Meta:
model = NotificationPreference
fields = (
'reminder',
)
这会将输入格式更改为:
11:00:00
仍然给我上述验证错误。
我做错了什么?
答案 0 :(得分:8)
要获得12小时的时间格式,您可以使用以下内容:
输入(这是Django在验证中使用的格式列表):
field = TimeField(input_formats=('%I:%M %p',...,...))
对于输出(这是Django用于显示时间值的格式):
field = TimeField(widget=TimeInput(format='%I:%M %p'))
%I表示12小时时钟格式,而%H表示24小时时钟格式。
此外,可以在每个语言环境formats.py文件中找到input_formats的默认列表。 Django使用input_formats列表中的第一种格式作为时间字段的默认输出格式。
答案 1 :(得分:5)
我正在寻找类似的答案而我找不到适合models.TimeField
的答案,因此,我在网站上找到的最简单的解决方案是设置 settings.py 以下全局变量:
TIME_INPUT_FORMATS = ['%I:%M %p',]
我希望这有助于某人。
要使用其他格式,请参阅:
https://docs.python.org/3/library/datetime.html#strftime-strptime-behavior
答案 2 :(得分:0)
根据Django documentation和python's datetime docs,如果您将时间输入设置更改为:
TIME_INPUT_FORMATS = ('%I:%M %p',)
答案 3 :(得分:0)
我认为你可以在forms.py
中做这样的事情field = DateTimeField(input_formats='%H:%M %p',...)