Установить вход в AM PM в поле времени Django

Я хочу, чтобы пользователи могли выбирать между часами утра и вечером с моим временным полем в django

В настоящее время, если я вхожу:

11:00 УТРА

, я получаю ошибку формы: "Введите правильное время".

Если я введу:

11:00

форма проверяется без проблем.

Я также попробовал:

class RemindersForm(forms.ModelForm):

    remdinder = forms.TimeField(input_formats='%H:%M %p',)

    class Meta:
        model = NotificationPreference
        fields = (
                  'reminder', 
                  )

Это изменяет формат ввода на:

11:00:00

и до сих пор дает мне вышеуказанную ошибку проверки.

Что я делаю неправильно?

4 ответа

Я искал похожий ответ и не нашел подходящего models.TimeFieldТаким образом, самое простое решение, которое я нашел для работы с этим сайтом, было бы установить в вашем settings.py следующую глобальную переменную:

TIME_INPUT_FORMATS = ['%I:%M %p',]

Я надеюсь, что это помогает кому-то.

Для использования других форматов смотрите:

https://docs.python.org/3/library/datetime.html

Чтобы получить 12-часовой формат времени, вы должны использовать следующее:

Для ввода (это список форматов, которые Django использует при проверке):

field = TimeField(input_formats=('%I:%M %p',...,...))

Для вывода (это формат, который Django будет использовать для отображения значений времени):

field = TimeField(widget=TimeInput(format='%I:%M %p'))

%I указывает на 12-часовой формат часов, тогда как%H указывает на 24-часовой формат часов.

Кроме того, список по умолчанию input_formats можно найти в каждом файле locales format.py. Django использует первый формат в списке input_formats в качестве формата вывода по умолчанию для полей времени.

Я думаю, что вы можете сделать что-то вроде этого в forms.py

field = DateTimeField(input_formats='%H:%M %p',...)

В соответствии с документацией Django и документацией по времени и времени на python, он должен работать, если вы измените настройки ввода времени на:

TIME_INPUT_FORMATS = ('%I:%M %p',)
Другие вопросы по тегам