Fixed #24677 -- Made TextField.to_python() return a string.

This is consistent with CharField.
This commit is contained in:
Rolo 2015-06-04 11:24:53 +01:00 committed by Tim Graham
parent dfdcb3ca22
commit 19e67c6cd1
2 changed files with 12 additions and 2 deletions

View File

@ -2141,12 +2141,15 @@ class TextField(Field):
def get_internal_type(self): def get_internal_type(self):
return "TextField" return "TextField"
def get_prep_value(self, value): def to_python(self, value):
value = super(TextField, self).get_prep_value(value)
if isinstance(value, six.string_types) or value is None: if isinstance(value, six.string_types) or value is None:
return value return value
return smart_text(value) return smart_text(value)
def get_prep_value(self, value):
value = super(TextField, self).get_prep_value(value)
return self.to_python(value)
def formfield(self, **kwargs): def formfield(self, **kwargs):
# Passing max_length to forms.CharField means that the value's length # Passing max_length to forms.CharField means that the value's length
# will be validated twice. This is considered acceptable since we want # will be validated twice. This is considered acceptable since we want

View File

@ -246,6 +246,13 @@ class ManyToManyFieldTests(test.SimpleTestCase):
) )
class TextFieldTests(test.TestCase):
def test_to_python(self):
"""TextField.to_python() should return a string"""
f = models.TextField()
self.assertEqual(f.to_python(1), '1')
class DateTimeFieldTests(test.TestCase): class DateTimeFieldTests(test.TestCase):
def test_datetimefield_to_python_usecs(self): def test_datetimefield_to_python_usecs(self):
"""DateTimeField.to_python should support usecs""" """DateTimeField.to_python should support usecs"""