Opened 2 years ago

Closed 2 years ago

#28090 closed Bug (duplicate)

TimeField's value incorrectly localized in forms

Reported by: Tomek Rej Owned by: nobody
Component: Forms Version: 1.11
Severity: Normal Keywords:
Cc: ygan@… Triage Stage: Accepted
Has patch: no Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no

Description (last modified by Tim Graham)

When passing a datetime.time instance to the choices parameter in a TimeField, the admin template converts it to a human readable form. For example, time(0, 0) is converted to "midnight", time(1, 30) is converted to 1:30 a.m. In Django 1.10, it gets formatted as 00:00:00 and 01:30:00 respectively.

An example of the choices I pass in to the constructor is:

[
    (datetime.time(0, 0), '00:00'),
    (datetime.time(0, 30), '00:30'),
    (datetime.time(1, 0), '01:00'),
    ....,
    (datetime.time(23, 30), '23:30')
]

This causes the admin form validation to fail with errors like the following:
Select a valid choice. midnight is not one of the available choices.

Change History (2)

comment:1 Changed 2 years ago by Musen

Cc: ygan@… added

comment:2 Changed 2 years ago by Tim Graham

Component: UncategorizedForms
Description: modified (diff)
Resolution: duplicate
Status: newclosed
Summary: TimeField rendering in admin formsTimeField's value incorrectly localized in forms
Triage Stage: UnreviewedAccepted

Bisected to 6d8979f4c2fbfb9fd5db92acd72489cbbcbdd5d1. It happens in forms outside the admin also. I think it's a duplicate of #28075 -- the <select> value is inadvertently localized just like in that ticket.

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