Django Forms: проверка TimeField

Я чувствую, что пропускаю что-то очевидное здесь. Я сделал, чтобы Django сформировался с TimeField на нем. Я хочу смочь позволить времена как "10:30", но я не могу заставить это признавать, что формат ввода или использовать "%P" формат (то, которое имеет примечание, присоединило высказывание, что это - "Собственное расширение", но не говорит, куда это прибывает из). Вот суть моего кода формы:

calendar_widget = forms.widgets.DateInput(attrs={'class': 'date-pick'}, format='%m/%d/%Y')
time_widget = forms.widgets.TimeInput(attrs={'class': 'time-pick'})
valid_time_formats = ['%P', '%H:%M%A', '%H:%M %A', '%H:%M%a', '%H:%M %a']

class EventForm(forms.ModelForm):
    start_date = forms.DateField(widget=calendar_widget)
    start_time = forms.TimeField(required=False, widget=time_widget, help_text='ex: 10:30AM', input_formats=valid_time_formats)
    end_date = forms.DateField(required=False, widget=calendar_widget)
    end_time = forms.TimeField(required=False, widget=time_widget, help_text='ex: 10:30AM', input_formats=valid_time_formats)
    description = forms.CharField(widget=forms.Textarea)

Любое время я отправляю "10:30", я получаю ошибку проверки. Базовая модель имеет два поля, event_start и event_end, никакие поля времени, таким образом, я не думаю, проблема там. Какую глупую вещь я пропускаю?

9
задан Tom 26 May 2010 в 14:11
поделиться

2 ответа

Вам нужно использовать %I для разбора часов, когда вы указываете %p. См. первое примечание в таблице директив здесь: http://docs.python.org/library/time.html#time.strftime.

11
ответ дан 4 December 2019 в 09:12
поделиться

Понятно благодаря ответу Карен: символы форматирования не те, которые указаны для фильтров Django сейчас / даты , они предназначены для времени Python .strftime (формат [, t]) . Чтобы принять AM / PM, вам нужно переключиться с% H на% I, чтобы фильтры теперь выглядели так:

valid_time_formats = ['%H:%M', '%I:%M%p', '%I:%M %p']

(Это сообщение доставлено вам с помощью открытого исходного кода. Без него я бы никогда не понял этого.)

12
ответ дан 4 December 2019 в 09:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: