How to validate a Django Form field whose value can only increase on each update? -
मैंने एक मॉडल के आधार पर एक फार्म क्लास बनाया है:
class MyModel (models.Model ): Growing_field = models.PositiveIntegerField () वर्ग MyForm (forms.ModelForm): कक्षा मेटा: मॉडल = MyModel
मैंने एक मौजूदा माइकलस इंस्टेंस को POST डेटा का उपयोग करके बदलने के लिए एक फॉर्म बनाया है प्रपत्र:
m = MyModel.objects.get (pk = n) f = MyForm (request.POST, उदाहरण = मी)
हर बार च अद्यतन किया जा रहा है, f.increasing_field केवल पिछले मान से बड़ा ही हो सकता है।
मैं उस मान्यता को कैसे लागू करूं?
1 रास्ता मुझे लगता है कि clean_increasing_field को एक अतिरिक्त तर्क जो बढ़ते_फ़ील्ड के पिछले मान का प्रतिनिधित्व करता है:
def clean_increasing_field (स्वयं, पिछले_वार्इ) ...
इस तरह मैं बस सुनिश्चित कर सकता हूं कि नया मान पिछले मान से अधिक है। लेकिन ऐसा लगता है कि स्वच्छ_ () विधियां अतिरिक्त तर्कों पर नहीं ले सकती हैं।
इस मान्यता को कैसे पूरा करें?
चूंकि मूल मॉडल को सत्यापन पूरा होने के समय तक अद्यतन नहीं किया गया है, इसलिए आप" self.instance.increasing_value "(या जो भी आपके फ़ील्ड का उपयोग करते हुए वर्तमान (अपरिवर्तित) मान को देख सकते हैं कहा जाता है)। नए वैल्यू के साथ इसकी तुलना करें और एक त्रुटि बढ़ाएं यदि यह मौजूदा मान से अधिक नहीं है।
def clean_increasing_field (स्वयं): new_val = self.cleaned_data ['increase_field'] अगर new_val & Lt; = self.instance.increasing_field: रूपों को बढ़ाता है। मान्यकरण त्रुटि ("बढ़ते क्षेत्र में वृद्धि होनी चाहिए!") नए_वल रिटर्न वापसी हमेशा डेटा वापस लाती है
नोट: स्वयं अंतर्संस वापस आ जाएगी जिस मॉडल को ModelForm बाध्य है।
Comments
Post a Comment