﻿id	summary	reporter	owner	description	type	status	component	version	severity	resolution	keywords	cc	stage	has_patch	needs_docs	needs_tests	needs_better_patch	easy	ui_ux
22290	Forms DateField show_hidden_initial USE_L10N = False and custom DATE_INPUT_FORMATS	dibrovsd@…	nobody	"Hi.

if settings is:
- USE_L10N = False
- DATE_INPUT_FORMATS = ('%d.%m.%Y', '%Y-%m-%d')

then format in DateInput and HiddenInput (default hidden_widget for DateField) is different:
- DateInput: '01.01.2014'
- HiddenInput: '2014-01-01'

Field._has_changed('2014-01-01',  '2014-01-01') always return True in form.changed_data

For default DATE_INPUT_FORMATS, DateInput use '%Y-%m-%d' (DATE_INPUT_FORMATS[0] for USE_L10N = False)
But if DATE_INPUT_FORMATS[0] != '%Y-%m-%d'

format HiddenInput != format DateInput

Test case:
{{{
from django import forms
from datetime import date

class TestForm(forms.Form):
    date_field = forms.DateField(show_hidden_initial=True)

form = TestForm(initial={'date_field': date.today()})

print form.as_ul()
}}}

Fix:
# add HiddenDateInput
class HiddenDateInput(forms.DateInput):
    is_hidden = True
    input_type = 'hidden'

# set HiddenDateInput for default hidden_widget in DateField
class DateField(fields.DateField):
    hidden_widget = widgets_custom.HiddenDateInput"	Bug	closed	Forms	1.6	Normal	worksforme	DateField USE_L10N hidden_initial DATE_INPUT_FORMATS		Unreviewed	1	0	0	0	0	0
