सेव / डिलीट सिग्नल आमतौर पर उन परिस्थितियों में अनुकूल होते हैं, जहाँ आपको बदलाव करने की ज़रूरत होती है, जो सवाल में मॉडल के लिए पूरी तरह से विशिष्ट नहीं हैं, या उन मॉडलों पर लागू किया जा सकता है जिनमें कुछ सामान्य है, या मॉडल भर में उपयोग के लिए कॉन्फ़िगर किया जा सकता है।
ओवरराइड save
विधियों में एक सामान्य कार्य एक मॉडल में कुछ पाठ क्षेत्र से स्लग की स्वचालित पीढ़ी है। यह कुछ का एक उदाहरण है, यदि आपको कई मॉडलों के लिए इसे लागू करने की आवश्यकता है, तो एक pre_save
सिग्नल का उपयोग करने से लाभ होगा , जहां सिग्नल हैंडलर स्लग फ़ील्ड का नाम और फ़ील्ड का नाम स्लग से उत्पन्न कर सकता है। एक बार जब आपके पास ऐसा कुछ हो जाता है, तो आपके द्वारा लगाई गई कोई भी बढ़ी हुई कार्यक्षमता सभी मॉडलों पर भी लागू होगी - जैसे कि जिस स्लग को आप मॉडल के प्रकार के लिए जोड़ने जा रहे हैं, उसे देखने के लिए, विशिष्टता सुनिश्चित करने के लिए।
पुन: प्रयोज्य अनुप्रयोगों को अक्सर संकेतों के उपयोग से लाभ होता है - यदि वे जो कार्यक्षमता प्रदान करते हैं, उन्हें किसी भी मॉडल पर लागू किया जा सकता है, वे आम तौर पर (जब तक कि यह अपरिहार्य नहीं है) उपयोगकर्ताओं को सीधे इसका लाभ उठाने के लिए अपने मॉडल को संशोधित करने की आवश्यकता नहीं होगी।
उदाहरण के लिए, django-mptt के साथ , मैंने pre_save
संकेत का उपयोग खेतों के एक सेट को प्रबंधित करने के लिए किया, जो मॉडल के लिए एक पेड़ की संरचना का वर्णन करता है जो बनाने या अपडेट pre_delete
होने वाली है और हटाए जा रहे ऑब्जेक्ट के लिए पेड़ की संरचना के विवरण को हटाने का संकेत और इसका पूरा इसके पहले वस्तुओं का उप-वृक्ष और वे हटा दिए जाते हैं। संकेतों के उपयोग के कारण, उपयोगकर्ताओं को उनके लिए इस प्रबंधन को करने के लिए अपने मॉडल में जोड़ने या संशोधित करने save
या delete
उन्हें करने की आवश्यकता नहीं है, उन्हें बस django-mptt को यह बताना होगा कि वे किन मॉडलों को प्रबंधित करना चाहते हैं।