Формат TimeField в шаблоне Django - PullRequest
13 голосов
/ 11 октября 2011

Я пишу приложение в Django и использую несколько TimeFields в модели.Я только хочу работать с форматом времени чч: мм (не чч: мм: сс или чч вечера / утра или другие вещи).Я установил настройки django TIME_FORMAT = 'H:i' и USE_L10N = False в соответствии с документацией,

USE_L10N переопределяет TIME_FORMAT, если установлено значение True

InВ моем шаблоне я использую поля ввода, автоматически созданные Django, например:

{{formName.timeField}}

Проблема в том, что, если я ввожу что-то вроде "10:00" и выполняю POST, когда POST готово Django (или что-то еще) превращает его в "10:00:00" (поэтому он добавляет секунды).

  • Есть ли способ указать формат, в котором поля даты и времени отображают сохраненные даты?Если бы я мог просто использовать что-то вроде |date:"H:i" в значении поля ввода, это помогло бы.

С другой стороны, я знаю, что я мог бы сделать поле ввода вручную (без непосредственного использования {{formName.timeField}}), но в прошлом у меня были некоторые проблемы с этим, поэтому я хотел бы избежать этого (по крайней мере, на данный момент).

Подобный вопрос есть и в Django TimeField Modelбез секунд , но решение не работает (это дает мне 'NoneType' объект не имеет атрибута strptime)

Ответы [ 2 ]

23 голосов
/ 11 октября 2011

У меня была именно эта проблема в моем приложении, и я решил ее, передав параметр format в виджет TimeInput Джанго:

from django import forms

class SettingsForm(forms.Form):
    delivery_time = forms.TimeField(widget=forms.TimeInput(format='%H:%M'))
11 голосов
/ 05 ноября 2013

Если у вас есть формат, который вы хотите использовать для всех 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

...