Forms.py не может проверить подлинность в django

def clean_name(self):
    valname = self.cleaned_data['name']
    # if len(valname) < 3:
    #     raise forms.ValidationError('name must be at least 3 characters')
    # return valname # return the value if no error

    if valname[0] == 'S':
        raise forms.ValidationError('name cannot contain the letter S')
    return valname  # return the value if no error

здесь я применяю имя валидации, которое должно начинаться с S, но когда я ввожу строку, которая не может начинаться с S, она не выдает мне ошибку валидации.

Попробуйте это :

def clean_name(self):
valname = self.cleaned_data['name']
# if len(valname) < 3:
#     raise forms.ValidationError('name must be at least 3 characters')
# return valname # return the value if no error

if 'S' in valname[0]:
    raise forms.ValidationError('name cannot contain the letter S')
return valname  # return the value if no error

Если вы хотите посмотреть, содержит ли строка букву S, вам следует использовать оператор in. С другой стороны, ваш код сравнивает две строки, поэтому он вернет true только в том случае, если значением будет только буква S. Но если вы хотите узнать, начинается ли строка с буквы S, вам следует использовать метод startswith, например, так:

def clean_name(self):
valname = self.cleaned_data['name']
# if len(valname) < 3:
#     raise forms.ValidationError('name must be at least 3 characters')
# return valname # return the value if no error

if valname[0].startswith("S") :
    raise forms.ValidationError('name cannot contain the letter S')

надеюсь, это помогло :)

Вернуться на верх