У меня есть модель с DateTimeField:
deadline = models.DateTimeField(verbose_name="Valid unitl", null=True, blank=True)
Пользователям должно быть разрешено вводить дату, время и информацию о часовом поясе в поле. Это мой желаемый формат:
2012-12-31 23:30 +0430
Я ожидаю, что время будет преобразовано в UTC перед сохранением в БД. Поэтому я попытался использовать для этого форму модели, но она выдает ошибку проверки Enter a valid date/time.
для этого DateTimeField, если я ввожу значение выше.
Это в settings.py:
DATE_INPUT_FORMATS = ('%Y-%m-%d %H:%M %Z', )
Что мне не хватает?
Изменить:
По предложению Видул Петров попытался использовать поле формы:
deadline2 = forms.DateTimeField(input_formats=['%Y-%m-%d %H:%M %Z',],
Получил тот же эффект: Enter a valid date/time.
Изменить 2
Похоже, что datetime не может обработать параметр "%z". Это выдает ValueError:
datetime.datetime.strptime(value, format)
Итак, я проверил это в консоли:
>>> import datetime
>>> datetime.datetime.strptime('2012-12-30 19:00 +0100', "%Y-%m-%d %H:%M %z")
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/_strptime.py", line 317, in _strptime
(bad_directive, format))
ValueError: 'z' is a bad directive in format '%Y-%m-%d %H:%M %z'
Также пробовал pytz:
>>> import pytz
>>> pytz.datetime.datetime.strptime('2012-12-30 19:00 +0100', "%Y-%m-%d %H:%M %z")
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/_strptime.py", line 317, in _strptime
(bad_directive, format))
ValueError: 'z' is a bad directive in format '%Y-%m-%d %H:%M %z'
Я действительно чувствую, что это должно сработать. Я пропустил какую-то часть документации, которая говорит об обратном?
input_formats=('%Y-%m-%d %H:%M %z',)
- person Vidul   schedule 29.12.2012