Ich habe zwei Fragen bezüglich der sauberen Methode auf einer Modellform. Hier ist mein Beispiel:modelform: überschreiben saubere Methode
class AddProfileForm(ModelForm):
...
password = forms.CharField(max_length=30,widget=forms.PasswordInput(attrs={'class':'form2'}))
password_verify = forms.CharField(max_length=30,widget=forms.PasswordInput(attrs={'class':'form2'}), label='Retype password')
...
class Meta:
model = UserModel
fields=("username", "password", "password_verify", "first_name", "last_name", "date_of_birth", "biography", "contacts",)
#called on validation of the form
def clean(self):
#run the standard clean method first
cleaned_data=super(AddProfileForm, self).clean()
password = cleaned_data.get("password")
password_verify = cleaned_data.get("password_verify")
#check if passwords are entered and match
if password and password_verify and password==password_verify:
print "pwd ok"
else:
raise forms.ValidationError("Passwords do not match!")
#always return the cleaned data
return cleaned_data
Soll ich immer den Standard saubere Methode aufrufen?
cleaned_data=super(AddProfileForm, self).clean()
Sollte ich immer die cleaned_data Variable zurückgeben?
return cleaned_data
1/Wenn ich also die clean-Methode der Elternklasse nicht anrufe, werden die anderen Felder nicht validiert? In welchem Fall sollte das nützlich sein? (Felder müssen immer validiert werden, oder?) 2/In meiner sauberen Methode kann es einen Validierungsfehler geben, aber ich gebe cleaned_data trotzdem zurück! Ist es ein falscher Weg? – rom
@rom, Felder werden in ihrer eigenen 'field_clean()' Methode validiert. Mit der 'clean()' Methode validieren Sie jede Kombination oder mehrere Felder mit Werten, die miteinander in Beziehung stehen. – Rohan
Ok also, wenn ich Super entfernen (AddProfileForm, self) .clean() funktioniert es immer noch, nein? Oder es prüft nicht die Einschränkungen von unique_together (zum Beispiel)? – rom