Формат TimeField в шаблоне Django
Я пишу заявку в Django
и используя несколько TimeFields
в модели. Я только хочу работать с форматом времени чч: мм (не чч: мм: сс или чч вечера / утра или другие вещи). Я установил настройку Джанго 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 без секунд, но решение не работает (это дает мне 'NoneType
"У объекта нет атрибута"strptime
")
2 ответа
У меня была именно эта проблема в моем приложении, и я решил ее, передав format
параметр для Джанго TimeInput
виджет:
from django import forms
class SettingsForm(forms.Form):
delivery_time = forms.TimeField(widget=forms.TimeInput(format='%H:%M'))
Если у вас есть формат, который вы хотите, чтобы все TimeFields
использовать, вы можете добавить TIME_INPUT_FORMATS
в ваш файл настроек. Например, TIME_INPUT_FORMATS = ('%I:%M %p',)
отформатирую ваше время как "5:30 вечера".
Документы: https://docs.djangoproject.com/en/dev/ref/settings/