2011-01-13 82 views
0

我有一個窗體(2字段),用戶選擇/輸入日期&使用jQuery的DatePicker的時間& TimePicker。該格式的說出來是:使用jQuery DateField&TimeField格式DatePicker&TimePicker

01/05/2011 
11:00 PM 

形式將不提交的,所以我覺得有這些格式的,我用我的窗體類的DateField & TimeField衝突。這是真的?如果是這樣,這些輸入需要什麼格式?

謝謝!

+0

你使用jQuery UI的日期選擇器或其他一些日期選擇器插件一個jQueryUI的語言文件的完整的例子嗎? – 2011-01-13 05:54:54

+0

你使用哪個TimePicker插件來使用jQueryUI?它似乎沒有默認出現,並有幾個選項。 – slacy 2011-01-13 05:55:29

回答

3

您可以通過查看Django的源讀取這些字段的驗證代碼。在Django /形式/ 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。

你可以在你的settings.py中手動設置TIME_INPUT_FORMATS爲一個strptime格式的字符串,它可以用於你想要的,這可能類似於「%I:%M%p」(請注意,你不能使用%r因爲它看起來像需要秒)。您可能還想包括原始值,只是爲了與其他事物(如Django管理界面)可能的兼容性。

我不熟悉jQuery日期&時間選擇器 - 也許你可以配置它們以Django支持的格式輸出時間?

0

我有這樣的設置運行良好,只是用

LANGUAGE_CODE = 'fr-FR' 
在我的設置

。PY 並使用jQueryUI的語言文件
this page