У меня проблема с проверкой полей формы в Django.
У меня есть форма profile_edit
, в которой есть набор функций clean
. Кроме того, для управления текущим паролем мне нужно передать пароль текущего пользователя в форму.
email = forms.EmailField(label=_("member_Email"),required = True)
currentPassword = forms.CharField(label=_("member_currentPassword"),widget=forms.PasswordInput,required=False)
newPassword = forms.CharField(label=_("member_newPassword"),widget=forms.PasswordInput,required=False)
newPasswordRe = forms.CharField(label=_("member_newPasswordRe"),widget=forms.PasswordInput,required=False)
emailPreference = forms.ChoiceField(label=_("member_email_preference"), widget=forms.RadioSelect(renderer=HorizRadioRenderer),choices = UserMailPreference.USER_MAIL_PREF,required = True)
gender = forms.ChoiceField(label=_("member_gender"), widget=forms.RadioSelect(renderer=HorizRadioRenderer),choices = UserGender.USER_GENDER ,required = False)
birthYear = forms.ChoiceField(label=_("member_birthyear"),required = False)
education = forms.ChoiceField(label=_("member_education"),choices = UserEducation.USER_EDU, required = False)
def __init__(self,*args, **kwargs):
super(MemberSettings,self).__init__(*args, **kwargs)
now = datetime.datetime.now()
self.fields["birthYear"].choices = birthYearList
def set_user(self, user):
self.user = user
def clean_email(self):
field_data = self.cleaned_data['email']
if not field_data:
return ''
try:
u = User.objects.get(email=field_data)
if not u.id == self.user.id:
raise forms.ValidationError(_('err_already_registered'))
except ObjectDoesNotExist:
pass
return field_data
Используя метод set_user
, я могу передать текущего пользователя в форму, однако, когда я пишу
form = MemberSettings(default_data)
form.set_user(u)
на мой взгляд, форма пытается проверить все поля, хотя я просто пытаюсь инициализировать форму.
Но если я не установлю пользователя, форма работает нормально.
В чем проблема, которую я не могу заметить?
Спасибо