我有一個DateTimeField字段的模型:帶有UTC偏移量的django DateTimeField?
deadline = models.DateTimeField(verbose_name="Valid unitl", null=True, blank=True)
應該允許用戶輸入日期,時間和時區信息領域。這是我想要的格式:
2012-12-31 23:30 +0430
我希望時間將存儲到數據庫之前轉換爲UTC。所以我嘗試使用模型表單,但是如果輸入上面的值,則會在該DateTimeField上拋出Enter a valid date/time.
驗證錯誤。
這是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不能處理th e「%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(https://docs.djangoproject.com/en/dev/ref/forms/fields/#django.forms.DateTimeField.input_formats)? – Vidul
@ВидулПетров沒有運氣,看編輯 – frnhr
@Сек:請嘗試'input_formats =('%Y-%m-%d%H:%M%z',)' – Vidul