【问题标题】:TimeField format in Django templateDjango模板中的时间字段格式
【发布时间】:2011-12-05 11:36:15
【问题描述】:

我正在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' object has no attribute 'strptime')

【问题讨论】:

    标签: django format timefield


    【解决方案1】:

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

    from django import forms
    
    class SettingsForm(forms.Form):
        delivery_time = forms.TimeField(widget=forms.TimeInput(format='%H:%M'))
    

    【讨论】:

    • 只是给以后的读者注意,TimeInput 小部件的format 参数只控制字段的初始值输出格式,不控制字段的输入验证。对于输入验证格式,请使用TimeFieldinput_formats 参数。
    【解决方案2】:

    假设您有一个希望所有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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-01
      • 2016-04-22
      • 2019-01-21
      • 2019-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-20
      相关资源
      最近更新 更多