आपके द्वारा बताई गई समस्या को हल करने के कई तरीके हैं:
- अनुप्रयोग तर्क
- विशिष्ट तर्क देखें -- यदि व्यवहार किसी एक दृश्य के लिए विशिष्ट है, तो परिवर्तनों को दृश्य में रखें।
- मॉडल-विशिष्ट तर्क -- यदि व्यवहार किसी एकल मॉडल के लिए विशिष्ट है, तो सेव() मेथड को ओवरराइड करें मॉडल के लिए।
- मिडलवेयर लॉजिक -- यदि व्यवहार कई मॉडलों से संबंधित है या किसी मौजूदा एप्लिकेशन के आसपास लपेटने की आवश्यकता है, तो आप Django के प्री-सेव/पोस्ट-सेव सिग्नल एप्लिकेशन को बदले बिना अतिरिक्त व्यवहार जोड़ने के लिए।
- डेटाबेस संग्रहित प्रक्रियाएं - आम तौर पर एक संभावना है, लेकिन Django का ORM उनका उपयोग नहीं करता है। सभी डेटाबेस में पोर्टेबल नहीं है।
- डेटाबेस ट्रिगर -- एक डेटाबेस से दूसरे डेटाबेस में पोर्टेबल नहीं (या डेटाबेस के एक संस्करण से अगले तक), लेकिन आपको एकाधिक (संभवतः गैर-Django) अनुप्रयोगों में साझा व्यवहार को नियंत्रित करने की अनुमति देता है।
व्यक्तिगत रूप से, मैं या तो सेव() विधि को ओवरराइड करना, या Django सिग्नल का उपयोग करना पसंद करता हूं। दृश्य-विशिष्ट तर्क का उपयोग करने से आप एक ही मॉडल (मॉडलों) के एकाधिक दृश्यों के साथ बड़े अनुप्रयोगों पर पकड़ बना सकते हैं।