python - Django inheritance: how to have one method for all subclasses? -
इस सवाल का पहले से ही एक उत्तर है: < / P>
- 8 जवाब
मेरे पास एक मॉडल है
बेसमोडेल
और इसके कई उप-वर्ग
चाइल्डमोडेलए (बेसमोडेल), चाइल्डमोडेलबी (बेसमोडेल), ... मल्टी-टेबल इनहेरिटेशन का उपयोग करना भविष्य में मेरे पास दर्जनों सबक्लास मॉडलों की योजना है।
सभी उपवर्गों में विधि का कुछ कार्यान्वयन है
do_something ()
कैसे मैं एक बेसमॉडल इंस्टेंस से डॉट कॉमिंग कॉल कर सकता हूं?
लगभग एक समान समस्या (समाधान के बिना) यहां पोस्ट की गई है:
एक सरल प्रश्न: मैं कैसे इसके किसी एक को बेसमोडल इंस्टेंस को हल करता हूँ सभी संभव उप-वर्गों को जांचने के बिना सबकेस उदाहरण?
अगर आप सभी संभव उप-वर्गों को जांचने से बचना चाहते हैं, तो एकमात्र रास्ता मैं सोच सकता हूँ कि आधार वर्ग पर परिभाषित क्षेत्र में उपवर्ग के साथ जुड़े वर्ग नाम को संग्रहित किया जाएगा। आपके आधार वर्ग में इस तरह की कोई विधि हो सकती है:
def संकल्प (स्वयं): मॉड्यूल, cls_name = self.class_name.rsplit ("।", 1) मॉड्यूल = import_module (module) cls = Getattr (module, cls_name) return cls.objects.get (pk = self.pk)
यह उत्तर मुझे खुश नहीं करता है और मैं भी एक बेहतर समाधान देखना चाहूंगा, क्योंकि मैं जल्द ही इसी तरह की समस्या का सामना करना होगा।
Comments
Post a Comment