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

Я чувствую, что я упускаю что-то очевидное. У меня есть форма Django с TimeField на нем. Я хочу иметь возможность разрешать такие времена, как" 10:30AM", но я не могу заставить его принять этот формат ввода или использовать формат" %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:30AM", я получаю ошибку проверки. Основа модель имеет два поля: event_start и event_end, без полей времени, поэтому я не думаю, что проблема там. Что за глупость я упускаю?

2 ответов


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


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

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

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