diff --git a/django/newforms/forms.py b/django/newforms/forms.py index 9affe2fc82..5d7adfe812 100644 --- a/django/newforms/forms.py +++ b/django/newforms/forms.py @@ -5,6 +5,7 @@ Form classes from django.utils.datastructures import SortedDict, MultiValueDict from django.utils.html import escape from django.utils.encoding import StrAndUnicode +from django.conf import settings from fields import Field from widgets import TextInput, Textarea, HiddenInput, MultipleHiddenInput from util import flatatt, ErrorDict, ErrorList, ValidationError @@ -230,7 +231,7 @@ class BoundField(StrAndUnicode): # Some Widget render() methods -- notably RadioSelect -- return a # "special" object rather than a string. Call the __str__() on that # object to get its rendered value. - value = value.__str__() + value = value.__unicode__() return value def _errors(self): diff --git a/tests/regressiontests/forms/regressions.py b/tests/regressiontests/forms/regressions.py index 02b38ec58d..5daabc03af 100644 --- a/tests/regressiontests/forms/regressions.py +++ b/tests/regressiontests/forms/regressions.py @@ -11,11 +11,11 @@ It should be possible to re-use attribute dictionaries (#3810) >>> TestForm(auto_id=False).as_p() u'

F1:

\n

F2:

' -####################### -# Tests for form i18n # -####################### +####################### +# Tests for form i18n # +####################### There were some problems with form translations in #3600 - + >>> from django.utils.translation import gettext_lazy, activate, deactivate >>> class SomeForm(Form): ... username = CharField(max_length=10, label=gettext_lazy('Username')) @@ -26,4 +26,12 @@ There were some problems with form translations in #3600 >>> print f.as_p()

>>> deactivate() + +Unicode decoding problems... +>>> GENDERS = (('0', u'En tied\xe4'), ('1', u'Mies'), ('2', u'Nainen')) +>>> class SomeForm(Form): +... somechoice = ChoiceField(choices=GENDERS, widget=RadioSelect()) +>>> f = SomeForm() +>>> f.as_p() +u'

' """