在Django ModelForm中本地化DateField输出格式

时间:2014-08-07 23:34:18

标签: django django-forms

运行Django 1.4.10。尝试在模型中设置日期的本地化。阅读docs,似乎只是在ModelForm中为您的字段设置localize = True属性,并在您的设置中启用本地化。所以,我这样做:

my_field = DateField(localize=True)

在我的表单中,这在设置中:

USE_L10N = True

然后我们愉快地去表格,它部分起作用。输入格式已本地化,因此对于北美地区,它显示:

"m/d/y"

但是,当您第一次加载表单时,初始输出格式是默认值:

"y-m-d"

根据文档,输出本地化应该与输入本地化一样有效。我做错了什么?

1 个答案:

答案 0 :(得分:2)

好的,在这里回答我自己的问题,因为我有它的工作。您需要为窗口小部件格式提供要格式化的输出的窗口小部件。我认为这是Django中的一个错误。在任何情况下,该字段现在变为:

from django.utils import formats, translation

locale_format = formats.get_format('DATE_INPUT_FORMATS', lang=translation.get_language())[-1]
my_field = DateField(localize=True, widget=DateInput(format=locale_format))

locale_format列表中的最后一个条目返回短日期格式区域设置。不知道为什么会这样做。