Как обрезать пробелы внутри строки с проверкой 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')
Вернуться на верх