6

我想让用户能够使用我的 django 时间字段在上午和下午之间进行选择

目前,如果我输入:

11:00 AM

,我收到一个表单错误:“输入有效时间。”

如果我输入:

11:00

表单验证没有问题。

我也试过:

class RemindersForm(forms.ModelForm):

    remdinder = forms.TimeField(input_formats='%H:%M %p',)

    class Meta:
        model = NotificationPreference
        fields = (
                  'reminder', 
                  )

这会将输入格式更改为:

11:00:00

并且仍然给我上述验证错误。

我究竟做错了什么?

4

4 回答 4

14

我正在寻找类似的答案,但没有找到适合的答案models.TimeField,因此,我发现在整个站点范围内执行此操作的最简单解决方案是在您的settings.py中设置以下全局变量:

TIME_INPUT_FORMATS = ['%I:%M %p',]

我希望这可以帮助别人。

要使用其他格式,请参阅:

https://docs.python.org/3/library/datetime.html#strftime-strptime-behavior

于 2017-06-14T16:03:27.863 回答
10

要获得 12 小时时间格式,您将使用以下内容:

对于输入(这是 Django 在验证中使用的格式列表):

field = TimeField(input_formats=('%I:%M %p',...,...))

对于输出(这是 Django 用于显示时间值的格式):

field = TimeField(widget=TimeInput(format='%I:%M %p'))

%I 表示 12 小时时钟格式,而 %H 表示 24 小时时钟格式。

此外,可以在每个 locales formats.py 文件中找到默认的 input_formats 列表。Django 使用 input_formats 列表中的第一种格式作为时间字段的默认输出格式。

于 2015-06-20T16:54:33.313 回答
1

我认为你可以在 forms.py 中做这样的事情

field = DateTimeField(input_formats='%H:%M %p',...)
于 2014-11-04T17:40:11.710 回答
0

根据Django 文档python 的 datetime 文档,如果您将时间输入设置更改为:

TIME_INPUT_FORMATS = ('%I:%M %p',)
于 2014-11-04T17:39:09.833 回答