2012-04-01 4 views
11

मैं) एक रूप स्वच्छ (में क्षेत्र त्रुटियों स्थापित करने के लिए कोशिश कर रहा हूँ और मैं वर्तमान में कर रहा हूँ के रूप में स्वच्छ() और क्षेत्र त्रुटियों:Django -

self._errors['address'] = self._errors.get('address', ErrorList()) 
self._errors['address'].append(_(u'Please specify an address.')) 

वहाँ एक बेहतर और यदि संभव हो तो के लिए कम विधि है यह कर रहा हूं?

+0

उपयोग self.errors इसके बजाय, यह _errors वापस आती है और – radtek

उत्तर

5
  1. मानक तरीका raise ValidationError(message) है।
  2. clean_<fieldname>() विधियों, clean_address पर फ़ील्ड-विशिष्ट सत्यापन को अपने मामले में ले जाएं। इस तरह की विधि में उठाए गए ValidationError विशिष्ट फ़ील्ड में त्रुटि संदेश संलग्न करेंगे। clean() से उठाए गए एक को सामान्य रूप से मॉडल के लिए जिम्मेदार ठहराया जाएगा।
+1

मैं वर्तमान में 'साफ() का उपयोग कर रहा' कई क्षेत्रों से संबंधित कुछ बातें मान्य के लिए निजी मतलब नहीं है - मैं काफी नया हूँ सामान्य रूप से Django और पायथन के लिए और मैं सोच रहा था कि क्षेत्र विशिष्ट त्रुटियों की जांच/निर्माण/संलग्न करने के लिए बेहतर/छोटा रास्ता था। – RS7

+0

जोड़ा गया आइटम # 3, शायद यह आपको बताता है कि आपको क्या चाहिए। 'क्लीन_फील्ड' –

+0

के डीजेंगो के आंतरिक कार्यान्वयन से लिया गया क्या आप अपने सुझाव # 3 पर विस्तार कर सकते हैं? यह मेरे लिए काम नहीं करता है। मैं देख सकता हूं कि ['प्रमाणीकरण त्रुटि 'वर्ग] (https://code.djangoproject.com/browser/django/trunk/django/core/exceptions.py#L41) इस तरह की त्रुटियों का एक शब्दकोश स्वीकार करता है, लेकिन [' फॉर्म ._clean_form'] (https://code.djangoproject.com/browser/django/trunk/django/forms/forms.py#L297) वास्तव में इसका उपयोग नहीं करता है। –

7

शायद यह आपकी मदद करेगा। इसकी आम तौर पर आपको पसंदीदा ओवरराइड पसंद है और फ़ंक्शन के अंदर आप निम्नलिखित

कर सकते हैं यदि आप फ़ॉर्म विशिष्ट त्रुटियों को उठाना चाहते हैं तो आप कर सकते हैं।

self._errors["field"] = ErrorList([u"Error"]) 

इस यकीन है कि अगर आप एक गैर क्षेत्र त्रुटि आप कर सकते थे सरल उठाने की तरह एक प्रमाणीकरण त्रुटि तो

raise forms.ValidationError(_("Error")) 

आशा इस मदद करता है आप त्रुटि वर्ग

प्राप्त करते हैं।