Формат TimeField в шаблоне Django

я пишу заявление в 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" (поэтому он добавляет секунды).

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

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

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

2 ответов


у меня была именно эта проблема в моем приложении, и решить ее путем передачи виджета:

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 PM".

документы: https://docs.djangoproject.com/en/dev/ref/settings/#std:setting-TIME_INPUT_FORMATS