Вы можете прочитать код проверки для этих полей, посмотрев источник Django.
Глядя в django / forms / fields.py, прочитайте методы to_python () классов DateField и TimeField.
Мне кажется, они оба поддерживают несколько типов ввода:
- Экземпляр объекта datetime.datetime
- Экземпляр объекта datetime.date
- Строка, отформатированная в соответствии с настройкой DATE_INPUT_FORMATS (или TIME_INPUT_FORMATS)
Я думаю, что последний вариант - это то, что вы хотите. Отметив в django / conf / global_settings.py, вы можете увидеть значения этих настроек по умолчанию, которые включают в себя широкий диапазон строк формата strptime. Вот значение по умолчанию DATE_INPUT_FORMATS:
'%Y-%m-%d', '%m/%d/%Y', '%m/%d/%y', # '2006-10-25', '10/25/2006', '10/25/06'
'%b %d %Y', '%b %d, %Y', # 'Oct 25 2006', 'Oct 25, 2006'
'%d %b %Y', '%d %b, %Y', # '25 Oct 2006', '25 Oct, 2006'
'%B %d %Y', '%B %d, %Y', # 'October 25 2006', 'October 25, 2006'
'%d %B %Y', '%d %B, %Y', # '25 October 2006', '25 October, 2006'
Таким образом, любая строка даты, отформатированная любым из этих способов, должна работать (при условии, что в вашей локали не настроено что-то дурацкое - каждая локаль имеет специфичные для локали переопределения для этого поля, и вы должны проверить подкаталог локали для локали, которую вы работаем с).
Для TIME_INPUT_FORMATS существует аналогичная логика, которая по умолчанию:
'%H:%M:%S', # '14:30:59'
'%H:%M', # '14:30'
Так что я подозреваю, что именно это мешает вашей форме работать, так как ваше время имеет AM / PM.
Вы можете установить TIME_INPUT_FORMATS вручную в вашем файле settings.py для строки формата strptime, которая будет работать для того, что вы хотите, что, вероятно, будет выглядеть как «% I:% M% p» (обратите внимание, что вы не можете просто использовать % r, потому что, похоже, это требует секунд). Возможно, вы захотите включить и исходные значения, просто для возможной совместимости с другими вещами (например, интерфейс администратора Django).
Я не очень хорошо знаком со средствами выбора даты и времени в jQuery - может быть, вы можете настроить их для вывода времени в формате, который уже поддерживается Django?