DateField & TimeField форматирование с помощью jQuery DatePicker & TimePicker - PullRequest
0 голосов
/ 13 января 2011

У меня есть форма (2 поля), где пользователь выбирает / вводит дату и время, используя jQuery DatePicker & TimePicker. Формат, который выходит:

 01/05/2011
 11:00 PM

Форма не будет отправлена, поэтому я думаю, что есть конфликт с этими форматами и DateField & TimeField, который я использую в своем классе формы. Это правда? Если да, то в каком формате должны быть эти входные данные?

Спасибо!

Ответы [ 2 ]

3 голосов
/ 13 января 2011

Вы можете прочитать код проверки для этих полей, посмотрев источник 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?

0 голосов
/ 13 января 2011

У меня эта установка работает нормально, просто с помощью

LANGUAGE_CODE = 'fr-FR'

в моих settings.py и использование языкового файла для jQueryUI
эта страница содержит полный пример языкового файла jqueryUI

...