मैं कुछ हद तक एक Django शुरुआत कर रहा हूं और जितना संभव हो सके अपने अनुप्रयोगों को कम करने की कोशिश कर रहा हूं और इसे जितना संभव हो उतना छोटा उपयोग करने योग्य टुकड़ों में बना सकता हूं। re-usable apps बनाने की जेम्स बेनेट की रणनीति का पालन करने का प्रयास कर रहे हैं। इस बात को ध्यान में रखते हुए, मैं इस समस्या से आया।पुन: प्रयोज्य Django ऐप्स बनाना?
चलो कहते हैं कि मैं एक ऐप्लिकेशन है जो फिल्मों के बारे में जानकारी संग्रहीत करता था करते हैं:
कोड कुछ इस तरह दिखेगा: अब
class Movie(models.Model):
name = models.CharField(max_length=255)
...
, अगर मैं रेटिंग्स जोड़ना चाहते थे, मैं इस्तेमाल कर सकते हैं Django रेटिंग और केवल अपने मॉडल के लिए एक क्षेत्र को जोड़ने:
class Movie(models.Model):
name = models.CharField(max_length=255)
rating = RatingField(range=5)
...
यह पूरी तरह से मतलब है कि मेरी फिल्म एप्लिकेशन अब पर Django-रेटिंग्स निर्भर है और मैं इसे फिर से उपयोग करना चाहता था, लेकिन अब जरूरत रेटिंग्स अगर, मुझे अभी भी django-rating को स्थापित करना होगा या संशोधित करना होगा और मेरे ऐप को फोर्क करना होगा।
अब, मैं आयात के अलावा कोशिश/छोड़कर प्रयास कर सकता हूं और सफल होने पर फ़ील्ड को परिभाषित कर सकता हूं, लेकिन अब मेरी फिल्म ऐप डेटाबेस तालिका परिभाषा में रेटिंग से स्पष्ट रूप से जुड़ा हुआ है।
यह दो मॉडलों को अलग करने और मूवी के बजाय रेटिंग मॉडल में रिश्ते को परिभाषित करने के लिए और अधिक समझदार लगता है। इस तरह निर्भरता परिभाषित की जाती है जब मैं रेटिंग का उपयोग करता हूं, लेकिन मूवी ऐप का उपयोग करते समय इसकी आवश्यकता नहीं होती है।
आप इस समस्या से कैसे निपटते हैं? मॉडल को अलग करने के लिए कोई बेहतर तरीका है?
मुझे यह भी आश्चर्य है कि ऐसा करने में कोई बड़ी प्रदर्शन दंड है या नहीं।
संपादित करें: मैं यह स्पष्ट करना चाहता हूं कि यह समस्या का एक उदाहरण है और एक बिंदु को चित्रित करने के लिए कुछ हद तक योगदान हुआ है। जब भी मुझे संबंधित डेटा जोड़ने की आवश्यकता होती है, तो मैं "मूवी" मॉडल को संशोधित किए बिना अतिरिक्त जानकारी जोड़ने में सक्षम होना चाहता हूं। मैं अब तक प्रतिक्रियाओं की सराहना करता हूं।
मुझे आपकी सभी फिल्में, आदमी से प्यार है। – zeekay