Очищенные_данные формы регистрации

Привет,

У меня есть пользовательская форма регистрации, и я использую django localflavors в качестве валидации для двух полей. Я создал пользовательскую валидацию и она работает нормально, но когда я возвращаю очищенные данные, форма пропускает валидацию, которая поставляется с полями local flavor.

В общем, когда я определяю свою собственную функцию clean_data для валидации, она переопределяет валидацию django locolaflavors.

Форма

class CustomSignupForm(SignupForm):

first_name = forms.CharField(max_length=30, label='First Name', required=True)
last_name = forms.CharField(max_length=30, label='Last Name', required=True)
sec_id = SEPersonalIdentityNumberField(max_length=30, label='Pid', required=True)
org_nr = SEOrganisationNumberField(max_length=30, label='Org_nr', required=True)
telephone = forms.CharField(max_length=20, label='Telephone', required=True)
address = forms.CharField(max_length=30, label='Address', required=True)
city = forms.CharField(max_length=30, label='City', required=True)
zip_code = forms.CharField(max_length=30, label='Zip_code', required=True)
state = forms.ChoiceField(choices=COUNTY_CHOICES,label='State', required=True)
country = forms.ChoiceField(choices=COUNTRY_LIST,label='Country', required=True)

Моя пользовательская валидация

def clean(self):
    """
    Clean the form
    """
    cleaned_data = super().clean()
    secid= self.cleaned_data["sec_id"]


    if User.objects.filter(profile__sec_id=sec_id).exists():
        self.add_error(
            'sec_id',
            _('If you have a account please reset your password'),
        )
        return cleaned_data

Создание очищенных данных, после того как форма использует is_valid, так что перед использованием clean, необходимо использовать is_valid

Я решил проблему, не переименовывая стандартный метод clean(). Вместо этого я переименовал свою пользовательскую валидацию и пользователь поднимает ValidationError, и все работает:

  def clean_secid(self):
    sec_id= self.cleaned_data['sec_id']
    if User.objects.filter(profile__sec_id=sec_id).exists():
        raise ValidationError("If you have a account please reset your password")
    return sec_id
Вернуться на верх