Django模板中的TimeField格式

时间:2011-10-11 16:43:35

标签: django format timefield

我在Django编写了一个应用程序,并在模型中使用了几个TimeFields。我只想使用时间格式hh:mm(不是hh:mm:ss或hh p.m./a.m。或其他东西)。 我根据文档

设置了django设置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')

2 个答案:

答案 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