2012-07-11 54 views
0

我正在研究一個應該支持不同語言和風格的應用程序,如美國,英國和德國。Django日期格式的本地化

現在看documentation,例如,似乎沒有美國日期格式的直接支持。看來這部分需要手工完成。

所以我不停地挖成的文檔,發現this:

{{ value|date:"D d M Y" }} 

這似乎並不與形式雖然是工作,當我想這在我的代碼:

{{form.birth_date|date:"D d M Y"}} 

似乎格式化需要在表單字段本身進行設置。

更多的研究顯示了類似的問題被問在#1 2009:

該解決方案可以工作,但看起來很搞這樣一個簡單的問題。自2009年以來,Django已經走過了很長的一段路,所以我想知道是否有更好的方式直接進入ModelForm?

讓我們說我們有下面的代碼:

型號:

class ConversationHistory(models.Model): 
    contact_date  = models.DateField(_(u"Conversation Date")) 

表:

class ConversationForm(ModelForm):   
    class Meta: 
     model = ConversationHistory 

我能不能添加以下的ModelForm:

widgets = { 'contact_date': forms.DateInput(format='M d, Y') } 

這是正確的本地化方式嗎?如果我想將格式更改爲Brtish英語或德語,該怎麼辦?所以,我有我缺少的東西在這裏的感覺...

非常感謝,

UPDATE:

現在我已經試過這樣:

widgets = { 'contact_date': forms.DateInput(format='SHORT_DATE_FORMAT') } 

但日期顯示爲SHORT_DATE_FORMAT。

我錯過了什麼?

+0

也許[SHORT_DATE_FORMAT(https://docs.djangoproject.com/en/dev/ref/settings/#std%3asetting-SHORT_DATE_FORMAT) – jpic 2012-07-11 09:41:44

+0

@jpic請看我最新的問題。謝謝 – Houman 2012-07-11 16:34:40

回答

0

You're looking for the x format.或者最壞的情況下,您只需要I18Nize格式並讓翻譯者弄清楚。

+0

,但是當我完全忽略格式時,爲什麼我會看到2012/07/11而不是美式日期格式?在設置中,我將語言設置爲'LANGUAGE_CODE ='en-us''。整件事對我來說沒有意義。 – Houman 2012-07-11 17:05:47

0

我一直在爲此解決方案與dojo 2YRS!如果您使用dojango整合,我終於找到了以下作品。

someDate = DateField(widget=DateInput(attrs={'constraints':'{datePattern:\'dd/MM/yyyy\', strict:true}')) 

形式。PY

我不知道是否有幫助