【问题标题】:Localization of Date formats in DjangoDjango中日期格式的本地化
【发布时间】:2012-07-10 21:34:27
【问题描述】:

我正在开发一款应支持不同语言和风格的应用,例如美式、英式和德语。

现在查看documentation,例如似乎没有直接支持美国日期格式。看来这部分需要手工完成。

所以我一直在挖掘文档,发现this:

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

当我在我的代码中尝试这个时,这似乎不适用于表单:

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

似乎需要在表单域本身设置格式。

更多研究表明,2009:Stackoverflow 中提出了类似的问题

这个解决方案可以工作,但对于这样一个简单的问题,它看起来很有吸引力。自 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') }

这是正确的本地化方式吗?如果我想将格式更改为英式英语或德语怎么办?所以我觉得我在这里缺少一些东西......

非常感谢,

更新:

我现在已经试过了:

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

但日期显示为 SHORT_DATE_FORMAT。

我错过了什么?

【问题讨论】:

标签: django


【解决方案1】:

You're looking for the x format. 或者最坏的情况,你只需对格式进行 I18Nize 并让翻译人员弄清楚。

【讨论】:

  • 但是当我完全省略格式时,为什么我看到的是 2012/07/11 而不是美国日期格式?在设置中,我将语言设置为LANGUAGE_CODE = 'en-us'。整件事对我来说毫无意义。
【解决方案2】:

我一直在用dojo 为 2 年解决这个问题!!!如果您使用dojango 集成,我终于找到了以下作品。

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

forms.py

不知道有没有帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多