16

我正在编写一个应用程序并在模型中Django使用几个TimeFields。我只想使用时间格式 hh:mm (不是 hh:mm:ss 或 hh pm/am 或其他东西)。我已经设置了 django 设置TIME_FORMAT = 'H:i'USE_L10N = False根据文档,

USE_L10NTIME_FORMAT如果设置为覆盖True

在我的模板中,我使用了 Django 自动创建的输入框,例如:

{{formName.timeField}}

问题是,只要我引入类似 "10:00" 的内容并执行 a POST,当POST完成时 Django(或其他)将其变为 "10:00:00" (因此它增加了秒数)。

  • 有没有办法指定日期时间字段显示保存日期的格式?如果我可以|date:"H:i"在输入框的值中使用类似的东西就可以了。

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

Django TimeField Model without seconds中也有类似的问题,但解决方案不起作用(它给了我' NoneType'对象没有属性' strptime')

4

2 回答 2

27

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

from django import forms

class SettingsForm(forms.Form):
    delivery_time = forms.TimeField(widget=forms.TimeInput(format='%H:%M'))
于 2011-10-11T17:45:30.497 回答
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

于 2013-11-04T22:19:06.047 回答