Fixed #33406 -- Avoided creation of MaxLengthValidator(None) when resolving Value.output_field for strings.

This brings the behaviour in line with Field subclasses which append to
the validators within __init__(), like BinaryField, and prevents the
creation of a validator which incorrectly throws a TypeError, if it
were used.
This commit is contained in:
Keryn Knight 2022-01-03 11:29:24 +00:00 committed by Mariusz Felisiak
parent b894199eb0
commit 0ed2919814
2 changed files with 3 additions and 1 deletions

View File

@ -1010,7 +1010,8 @@ class CharField(Field):
def __init__(self, *args, db_collation=None, **kwargs):
super().__init__(*args, **kwargs)
self.db_collation = db_collation
self.validators.append(validators.MaxLengthValidator(self.max_length))
if self.max_length is not None:
self.validators.append(validators.MaxLengthValidator(self.max_length))
def check(self, **kwargs):
databases = kwargs.get('databases') or []

View File

@ -1859,6 +1859,7 @@ class ValueTests(TestCase):
and this demonstrates that they don't throw an exception.
"""
value_types = [
'str',
True,
42,
3.14,