वर्तमान में मेरे पास नए उपयोगकर्ता पंजीकरण को मान्य करने के लिए यह मॉडलफ़ॉर्म है:
class RegistrationForm(forms.ModelForm):
email = forms.CharField(max_length=75, required=True)
password = forms.PasswordInput()
password_confirm = forms.PasswordInput()
class Meta:
model = User
fields = ["username", "email", "password"]
def clean(self):
if self.password != self.password_confirm:
self.add_error("password_confirm", "Passwords do not match.")
उपयोगकर्ता को अपने पासवर्ड की पुष्टि करने के लिए आवश्यक है। इस फॉर्म को जमा करते समय मुझे निम्नलिखित त्रुटि मिलती है:
मान पर / रजिस्टर
"RegistrationForm" में "password_confirm" नाम का कोई फ़ील्ड नहीं है।
मैंने self.cleaned_data का उपयोग करने की कोशिश की, लेकिन फिर भी वही त्रुटि मिलती है।
फ़ील्ड विशेषता को हटाया नहीं जा सकता है और न ही इसमें पासवर्ड_कनेक्ट जोड़ा जा सकता है।
इसे कैसे ठीक किया जाएगा?
उत्तर:
जवाब के लिए 2 № 1password
तथा password_confirm
विजेट के रूप में परिभाषित किए जाते हैं, फ़ील्ड नहीं बनाते हैं।
दो CharFields परिभाषित करें और विजेट तर्क पास करें:
class RegistrationForm(forms.ModelForm):
email = forms.CharField(max_length=75, required=True)
password = forms.CharField(widget=forms.PasswordInput)
password_confirm = forms.CharField(widget=forms.PasswordInput)
जवाब के लिए 2 № 2
आपको पहले सुपर क्लीन को कॉल करने की आवश्यकता है, और फिर आपको फ़ील्ड के बजाय साफ़ किए गए डेटा का उपयोग करना चाहिए।
def clean(self):
cleaned_data = super(RegistrationForm, self).clean()
if cleaned_data.get("password") != cleaned_data.get("password_confirm"):
self.add_error("password_confirm", "Passwords do not match.")