/ / Django: दृश्य से non_field_error जोड़ें? - django, django- रूप

Django: देखने से non_field_error जोड़ें? - django, django-रूपों

मुझे टेम्पलेट में रेंडरिंग फ़ील्ड के एक समूह के साथ एक Django फ़ॉर्म मिला है। मुझे कुछ सीधे HTML इनपुट एलीमेंट्स भी मिले हैं, जिन्हें मैं एक्सेस करके व्यू में वेरिफाई करना चाहता हूं request.POST वार्स। अगर उन लोगों को मान्य नहीं किया जाता है, तो मैं Django फॉर्म में एक त्रुटि इंजेक्ट करना चाहता हूं ताकि मैं इसे पृष्ठ पर प्रदर्शित कर सकूं। क्या ऐसा करने का कोई तरीका है?

उत्तर:

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

आप काफी सुरुचिपूर्ण का उपयोग भी कर सकते हैं add_error () तरीका। Django> = 1.7 के लिए काम करता है।

यदि आप सेट करते हैं field जैसा None प्रपत्र त्रुटि को "non_field" के रूप में मानेगा। इसलिए:

form.add_error(None, "I"m non-field error")

एक जादू की तरह काम करता है।


जवाब के लिए 21 № 2

डैनियल के जवाब में जोड़ना, विशिष्ट वाक्यविन्यास है:

form.errors["__all__"] = form.error_class(["error msg"])

ध्यान दें कि आप स्थानापन्न कर सकते हैं "__all__" निरंतर के साथ NON_FIELD_ERRORS बेहतर संगतता के लिए (क्रेडिट) grafa)।

from django.forms.forms import NON_FIELD_ERRORS

जवाब के लिए 6 № 3

खैर, आप फॉर्म में कुछ भी डाल सकते हैं errors शब्दकोश, और गैर-क्षेत्र त्रुटियां अंदर जाती हैं errors["__all__"].

लेकिन आप कुछ क्षेत्रों को बाहर क्यों रख रहे हैंDjango फार्म, केवल अंत में अपनी त्रुटियों को वापस लाने के लिए? पहले सभी फ़ील्ड को फॉर्म में क्यों नहीं रखा गया? यदि यह एक मॉडलफॉर्म का उपयोग कर रहा है और आप इसमें फ़ील्ड जोड़ना चाहते हैं, तो आप इसे Django में केवल फॉर्म स्तर पर फ़ील्ड घोषित करके कर सकते हैं - फिर आप फॉर्म के भीतर उनके लिए स्वच्छ विधियों को परिभाषित कर सकते हैं।

class ExtendedModelForm(forms.ModelForm):
extra_field_1 = forms.CharField()
extra_field_2 = forms.CharField()

def clean_extra_field_1(self):
...etc...