Opened 14 months ago

Last modified 4 months ago

#23049 new Bug

Admin DateField doesn't support all DATE_INPUT_FORMATS

Reported by: Patrick Dwyer <pat@…> Owned by: nobody
Component: contrib.admin Version: 1.6
Severity: Normal Keywords:
Cc: kutenai Triage Stage: Accepted
Has patch: no Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no

Description

According to the documentation formats listed at http://docs.python.org/library/datetime.html#strftime-strptime-behavior are supported as DATE_INPUT_FORMATS. I have started using the date format "Thu 17 Jul 2014" represented by '%a %d %b %Y' as my DATE_FORMAT and the first listed DATE_INPUT_FORMAT but I am having issues on admin pages. The date picker calendar popups don't work correctly.

On initial page load the date is formatted correctly. When selecting the 17th of July 2014 from the calendar instead of getting "Thu 17 Jul 2014" the field is populated with "undefined 17 undefined 2014".

Looking at the code in admin/static/js/core.js these are the supported format characters...

        c: this.toString(),
        d: this.getTwoDigitDate(),
        H: this.getTwoDigitHour(),
        I: this.getTwoDigitTwelveHour(),
        m: this.getTwoDigitMonth(),
        M: this.getTwoDigitMinute(),
        p: (this.getHours() >= 12) ? 'PM' : 'AM',
        S: this.getTwoDigitSecond(),
        w: '0' + this.getDay(),
        x: this.toLocaleDateString(),
        X: this.toLocaleTimeString(),
        y: ('' + this.getFullYear()).substr(2, 4),
        Y: '' + this.getFullYear(),
        '%' : '%'

I think an "almost core" part of Django like admin should support what is documented or the documentation should be updated to reflect the actual behaviour.

I'm writing a simple fix for my own use. Although I'd be happy to start working on a real fix but don't want to waste time if this won't be considered.

Change History (4)

comment:1 Changed 14 months ago by patros

  • Needs documentation unset
  • Needs tests unset
  • Patch needs improvement unset

Without much investigation this could be tricky to implement in a way that was locale aware (that could be the reason this hasn't been done already).

comment:2 Changed 14 months ago by patros

I've just checked against the current master and stable/1.7.x branches and they seem to have the same limitation.

comment:3 Changed 13 months ago by timo

  • Triage Stage changed from Unreviewed to Accepted

comment:4 Changed 4 months ago by kutenai

  • Cc kutenai added

The latest documentation does not claim that all of the Python date formats are supported.

There is a specific list of formats supported by default, which does not include the format you are using.

What documentation leads you to believe that all of the formats should be supported?

Note: See TracTickets for help on using tickets.
Back to Top