/ / मैं अपने स्वच्छ फ़ंक्शन में self.cleaned_data के मानों का उपयोग कैसे नहीं कर सकता? - django, django-रूपों

मैं अपने स्वच्छ फ़ंक्शन में self.cleaned_data के मानों का उपयोग कैसे नहीं कर सकता? - django, django-रूपों

मैंने अपने Django रूप के लिए एक साफ समारोह लिखा था। मैंने परिभाषित किया OPTIONAL_PASSWORD_INPUT तथा OPTIONAL_REPEAT_PASSWORD_INPUT पासवर्ड इनपुट फ़ील्ड के रूप में ऊपर:

class addNewMemberForm(SignUpForm):
username = forms.SlugField(required=False,
min_length=MIN_USER_NAME,
max_length=MAX_USER_NAME,
label="Username (optional)",
help_text="If left empty, we will generate a username for you."
)
password = OPTIONAL_PASSWORD_INPUT
password2 = OPTIONAL_REPEAT_PASSWORD_INPUT

def clean(self):

# if user name is filled out, so must be the password field.
if self.data["username"] and not self.data["password"]:
raise forms.ValidationError("If you specify a username, you must specify a password.")

return self.cleaned_data

def __init__(self, *args, **kwargs):
super(SignUpForm, self).__init__(*args, **kwargs)
self.fields.keyOrder = uniqueify(["username", "email"] + self.fields.keyOrder)

अगर मैं बदलता हूँ if self.data["username"] and not self.data["password"]: सेवा मेरे if self.cleaned_data["username"] and not self.cleaned_data["password"]:, Django "उपयोगकर्ता नाम" के लिए एक महत्वपूर्ण त्रुटि पैदा करता है।

ऐसा क्यों है कि मैं मूल्यों का उपयोग कर सकता हूं self.data सरणी, लेकिन उनमें से नहीं self.cleaned_data मेरे साफ समारोह में सरणी?

एक और नोट पर, क्या यह सवाल भी मायने रखता है? क्या मैं बस उपयोग कर सकता हूं self.data?

उत्तर:

जवाब के लिए 0 № 1

कॉल करने से पहले व्यक्तिगत क्षेत्र सत्यापन और सफाई की जाती है form.clean. username केवल दर्ज किए गए डेटा वैध होने पर cleaned_data में जोड़ा जाता है। इसका मतलब है कि आपको या तो उपयोग करना चाहिए self.cleaned_data.get या जांचें कि क्या कोई त्रुटि है या नहीं self.errors आपकी सफाई में जल्दी और अतिरिक्त सत्यापन पर जमानत जो आवश्यक नहीं हो सकता है यदि व्यक्तिगत फ़ील्ड मान्य नहीं हैं।