Django 1.2:管理表单中的日期不适用于Locales(I10N = True)

时间:2010-05-28 13:33:37

标签: python django date django-admin

我在Django 1.2中有一个应用程序。 语言是可选择的(I18N和Locale = True)

当我选择英语时。在网站上,管理员工作正常。但是当我改为任何其他语言时,日期输入会发生这种情况(西班牙语例子):

正确地,输入接受西班牙格式%d/%m/%Y(即使从日历中选择,日期也按预期插入)。但是当我保存表单并再次加载时,日期显示为英文形式:%Y-%m-%d

真正的问题是,当我加载表单以更改任何其他文本字段并尝试保存时,我收到错误告诉我输入有效日期,所以我必须再次编写所有日期或更改语言网站使用管理员。

我没有在设置中为DATE_INPUT_FORMATS指定任何内容,也没有覆盖表单或模型。

当然我错过了一些东西,但我找不到它。任何人都可以给我一个暗示吗?

1 个答案:

答案 0 :(得分:2)

将此添加到您的设置应解决您称之为“真正问题”的部分:

DATE_INPUT_FORMATS = (   
    '%d/%m/%Y', '%d/%m/%y',     # '25/10/2006', '25/10/06'
    '%Y-%m-%d', '%y-%m-%d',     # '2006-10-25', '06-10-25'
)

DATETIME_INPUT_FORMATS = (
    '%d/%m/%Y %H:%M:%S',    # '25/10/2006 14:30:59'
    '%d/%m/%Y %H:%M',       # '25/10/2006 14:30'
    '%d/%m/%y %H:%M:%S',    # '25/10/06 14:30:59'
    '%d/%m/%y %H:%M',       # '25/10/06 14:30'
    '%Y-%m-%d %H:%M:%S',    # '2006-10-25 14:30:59'
    '%Y-%m-%d %H:%M',       # '2006-10-25 14:30'
    '%Y-%m-%d',             # '2006-10-25'
)

但这是Django的一个问题。我打开a ticket about the issue,但您应该发表评论,因为您的示例显示它是更严重的问题然后我认为是(因为事实证明并非所有本地化都接受“通用”和“本地化”日期输入格式)

更新:我忘了添加您可以将localize=True传递到日期小部件,然后他们应该始终以本地化格式显示日期。在this bug report中有一些如何执行此操作的示例。

我刚刚向django-developers邮件列表发布了关于此问题的a message