Как обрезать пробелы внутри строки с проверкой min_length и max_length?
Как обрезать пробелы внутри строки с проверкой min_length и max_length?
name = serializers.CharField(min_length=18, max_length=18, trim_whitespace=True, allow_blank=True, allow_null=True, required=False)
test_string_that_should_be_invalid = "1111111111111111 1"
test_string_valid = "111111111111111111"
Аргумент ключевого слова trim whitespace не запускает никаких дополнительных валидаторов. Все, что он делает, это обрезает пробелы в конце строки с помощью .strip()
при сохранении значения в базу данных.
def to_internal_value(self, data):
# We're lenient with allowing basic numerics to be coerced into strings,
# but other types should fail. Eg. unclear if booleans should represent as `true` or `True`,
# and composites such as lists are likely user error.
if isinstance(data, bool) or not isinstance(data, (str, int, float,)):
self.fail('invalid')
value = str(data)
return value.strip() if self.trim_whitespace else value
Похоже, что вы хотите убедиться, что в строке нет пробелов. Для этого вам нужно написать пользовательский валидатор на уровне полей. Что-то вроде:
if ' ' in value:
raise serializers.ValidationError('Value cannot contain spaces')