我在Django 1.2中有一个应用程序。 语言是可选择的(I18N和Locale = True)
当我选择英语时。在网站上,管理员工作正常。但是当我改为任何其他语言时,日期输入会发生这种情况(西班牙语例子):
正确地,输入接受西班牙格式%d/%m/%Y
(即使从日历中选择,日期也按预期插入)。但是当我保存表单并再次加载时,日期显示为英文形式:%Y-%m-%d
真正的问题是,当我加载表单以更改任何其他文本字段并尝试保存时,我收到错误告诉我输入有效日期,所以我必须再次编写所有日期或更改语言网站使用管理员。
我没有在设置中为DATE_INPUT_FORMATS指定任何内容,也没有覆盖表单或模型。
当然我错过了一些东西,但我找不到它。任何人都可以给我一个暗示吗?
答案 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。