У меня есть модель с DateTimeField:
deadline = models.DateTimeField(verbose_name="Valid unitl", null=True, blank=True)
Пользователям должно быть разрешено вводить информацию о дате, времени и часовом поясе в поле. Это мой желаемый формат:
2012-12-31 23:30 +0430
Я ожидаю, что время будет преобразовано в UTC перед сохранением в db. Поэтому я попытался использовать модельную форму для этого, но он выдает ошибку проверки Enter a valid date/time.
на этом DateTimeField, если я введу значение выше.
Это находится в settings.py:
DATE_INPUT_FORMATS = ('%Y-%m-%d %H:%M %Z', )
Что мне не хватает?
Edit:
В соответствии с предложением Видул Петров, попытался использовать поле формы:
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'
Я действительно чувствую, что это должно сработать. Я пропустил часть документов, которые говорят иначе?