मेरे पास मॉडलफॉर्म पर क्लीन विधि से संबंधित दो प्रश्न हैं।मॉडलफॉर्म: साफ विधि ओवरराइड
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
मैं हमेशा मानक साफ विधि बुलाना चाहिए: यहाँ मेरी उदाहरण है?
cleaned_data=super(AddProfileForm, self).clean()
क्या मुझे हमेशा cleaned_data चर वापस करना चाहिए?
return cleaned_data
1/इसलिए यदि मैं अभिभावक वर्ग की क्लीन विधि को कॉल नहीं करता हूं, तो अन्य फ़ील्ड मान्य नहीं होंगे? यह किस मामले में उपयोगी होना चाहिए? (फ़ील्ड हमेशा मान्य होना चाहिए, है ना?) 2/मेरी साफ विधि में, एक सत्यापन त्रुटि हो सकती है लेकिन मैं वैसे भी cleaned_data वापस आती है! क्या यह गलत तरीका है? – rom
@rom, फ़ील्ड्स को अपने 'field_clean()' विधि में मान्य किया गया है। 'स्वच्छ()' विधि किसी भी संयोजन या एकाधिक फ़ील्ड को एक दूसरे से संबंधित मूल्यों के साथ मान्य करना है। – Rohan
ठीक है तो अगर मैं सुपर (AddProfileForm, self) हटा देता हूं .clean() यह अभी भी काम करता है, नहीं? या यह अनन्य बाधाओं की जांच नहीं करेगा (उदाहरण के लिए)? – rom