Формат 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/

Другие вопросы по тегам