Проверка строки на наличие пробела возвращает ошибку в форме Django, даже если пробел отсутствует
В моей Django форме есть два поля, в которые пользователь должен вставить ровно одно слово. Поэтому, чтобы иметь некоторую валидацию в представлении, я создал следующий валидатор (идея заключается в поиске пробелов):
Views.py
[..]
if ' ' in poller_choice_one or poller_choice_two:
    raise ValidationError(('Limit your choice to one word'), code='invalid')
else:
[..]
 Чтобы сделать его более надежным, я добавил опцию strip к полям формы, подлежащим валидации:
    # Poller Choices
    poller_choice_one = forms.CharField(label='Choice one', max_length=20, strip=True)
    poller_choice_two = forms.CharField(label='Choice two', max_length=20, strip=True)
Я перепробовал кучу вводов, начиная от однозначных цифр и заканчивая одиночными символами и т.д., всегда возникает ошибка валидации
Ваше заявление if интерпретируется как:
if (' ' in poller_choice_one) or (poller_choice_two):
    # …
 сначала будет проверено, есть ли пробел в poller_choice_one. Если это не так, то он оценит истинность  poller_choice_two. Истинность strинга имеет True, если он содержит хотя бы один символ. Поэтому условие if будет True с того момента, когда в poller_choice_one будет пробел или poller_choice_two будет хотя бы один символ.
Таким образом, вы должны переписать условие так:
if ' ' in poller_choice_one or ' ' in poller_choice_two:
    raise ValidationError(('Limit your choice to one word'), code='invalid')
# …
                    Используя regex, можно реализовать такой валидатор:
def validate(s0, s1):
    return re.match(" ", s0) or re.match(" ", s1)
Пример:
poller_choice_one = "hi"
poller_choice_two = "how are you?"
if not validate(poller_choice_one, poller_choice_two):
    raise ValidationError(('Limit your choice to one word'), code='invalid')