开发者

Django 1.2: Dates in admin forms don't work with Locales (I10N=True)

开发者 https://www.devze.com 2023-01-01 04:06 出处:网络
I have an application in Django 1.2. Language is selectable (I18N and Locale = True) When I select the english lang. in the site, the admin works OK. But whe开发者_Python百科n I change to any other l

I have an application in Django 1.2. Language is selectable (I18N and Locale = True)

When I select the english lang. in the site, the admin works OK. But whe开发者_Python百科n I change to any other language this is what happens with date inputs (spanish example):

Correctly, the input accepts the spanish format %d/%m/%Y (Even selecting from the calendar, the date inserts as expected). But when I save the form and load it again, the date shows in the english form: %Y-%m-%d

The real problem is that when I load the form to change any other text field and try to save it I get an error telling me to enter a valid date, so I have to write all dates again or change the language in the site to use the admin.

I haven't specified anything for DATE_INPUT_FORMATS in settings nor have I overridden forms or models.

Surely I am missing something but I can't find it. Can anybody give me a hint?


Adding this to your settings should solve the part you call "the real problem":

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'
)

But it's a problem with Django. I opened a ticket about the issue, but you should comment, because your example shows it is even more serious problem then I thought it was (because as it turned out not all localization accepts both "universal" and "localized" date input formats).

Update: I forgot to add that you can pass localize=True to your date widgets, and they are supposed to then always display dates in localized format. There are some examples of how to do this in this bug report.

I just posted a message about the issue to django-developers mailing list.

0

精彩评论

暂无评论...
验证码 换一张
取 消