Django模板中的TimeField格式
我正在用 Django
写一个应用程序,并在模型中使用了几个 TimeFields
。我只想处理 hh:mm 这种时间格式(不想要 hh:mm:ss 或者上午/下午的格式)。我已经根据文档设置了 TIME_FORMAT = 'H:i'
和 USE_L10N = False
。
如果
USE_L10N
设置为True
,它会覆盖TIME_FORMAT
在我的模板中,我使用了 Django 自动创建的输入框,比如:
{{formName.timeField}}
问题是,当我输入 "10:00" 并提交 POST
时,Django(或者其他东西)会把它变成 "10:00:00"(也就是加上了秒数)。
- 有没有办法指定日期时间字段显示保存日期的格式?如果我能在输入框的值中使用类似
|date:"H:i"
的东西,那就解决了。
另一方面,我知道我可以手动创建输入框(不直接使用 {{formName.timeField}}
),但我之前在这方面遇到过一些问题,所以我想暂时避免这样做。
还有一个类似的问题在 Django TimeField Model without seconds,但那个解决方案不管用(它给我返回了 'NoneType
' 对象没有 'strptime
' 属性)。
2 个回答
12
假设你有一个想要所有 TimeFields
使用的时间格式,你可以在设置文件中添加 TIME_INPUT_FORMATS
。比如说,设置 TIME_INPUT_FORMATS = ('%I:%M %p',)
就会把你的时间格式化成 "5:30 PM" 这样的样子。
文档链接: https://docs.djangoproject.com/en/dev/ref/settings/#std:setting-TIME_INPUT_FORMATS
29
我在我的应用中也遇到了这个问题,后来通过给Django的TimeInput
小部件传递一个format
参数来解决了它:
from django import forms
class SettingsForm(forms.Form):
delivery_time = forms.TimeField(widget=forms.TimeInput(format='%H:%M'))