Есть форма:
class RegistrationForm(forms.ModelForm) :
password1 = forms.CharField(label='Password', widget=forms.PasswordInput)
password2 = forms.CharField(label='Confirm Password', widget=forms.PasswordInput)
class Meta :
model = User
fields = ('username', 'email', 'date_birth', 'phone')
widgets = {
'date_birth' : forms.DateInput(format='%Y-%m-%d',
attrs={'type' : 'date'}),
'username' : forms.TextInput(attrs={}),
'email' : forms.TextInput(attrs={'type' : 'email'}),
'phone' : forms.TextInput(attrs={}),
}
def clean_password(self):
print(self)
password1 = self.cleaned_data.get('password1')
password2 = self.cleaned_data.get('password2')
if password1 and password2 and password1 != password2 :
raise forms.ValidationError('Passwords dont match')
return password1
def save_form(self, commit=True):
user = super(RegistrationForm, self).save(commit=False)
user.set_password(self.cleaned_data['password1'])
if commit:
user.save()
return user
Необходимо , что бы при некорректном заполнении, возвращалась форма с указанием на ошибки(в данном случае меня интересует просто добавление класса CSS 'error-form' в некорректно заполненные поля widgets). Желательно это сделать без js. Изначально подумал что можно переопределить widgets для экземпляра класса , что то типа :
self.Meta.widgets[key].attrs['class'] = 'error_form' , но при этом переопределяется весь класс.
Можно ли как то переопределить widget только для экземпляра или может существует более правильный метод.