﻿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
21045	BoundField.value doesn't use to_python	Tomáš Ehrlich	nobody	"The problem occures when using data from POST in bound form:

{{{
class CustomForm(forms.Form):
    field = forms.IntegerField(initial=42)

form = CustomForm()
print(type(form['field'].value()))  # int

form = CustomForm({'field': '42'})
print(type(form['field'].value()))  # str
}}}

`form['field']` is `IntegerField`, but it returns string, when you pass data from POST/GET (which are usually strings). It even returns string, when you pass `initial='42'` (which is odd also). The problem is with FKs in `ModelForm`: the value in unbound form is int (from database), but in bound form it's string (from POST).

I've checked source code and `BoundField.value` uses `Field.prepare_value`, which is undocumented and (except for `DateTimeField`) it just returns original value.

I would expect, that `value` is always data type defined by `Field`, which is done in `to_python` method.


Questions are:
 1) Is it bug or feature?
 2) Should I use `to_python` instead, when I want ""consistent"" type of field value?
 3) What's the meaning of `prepare_value`?"	Bug	closed	Forms	1.5	Normal	invalid			Unreviewed	0	0	0	0	0	0
