2012-01-12 9 views
6

मेरी परियोजना में कई डीजेंगो अनुप्रयोग शामिल हैं जिन्हें अलग-अलग मशीनों पर अलग-अलग तैनात करने की आवश्यकता है। हालांकि अक्सर इन ऐप्स को कभी-कभी एक-दूसरे के मॉडल तक पहुंचने की ज़रूरत होती है, इसलिए मैं अपने मॉडल को "बाहरी" करने की सोच रहा था ताकि उन्हें किसी ऐप से अधिक सुंदरता से पहुंचा जा सके। , के बाद से अनुप्रयोगों को पार संदर्भ-कर सकते हैं एक दूसरे कोक्या यह शेष अनुप्रयोग से मॉडलों को अलग करने के लिए एक अच्छा प्रोग्रामिंग अभ्यास है

/ 
+ application1 
+ application2 
+ models 

वहाँ कि (कोड रख-रखाव के अलावा अन्य) कर रही करने के लिए एक कार्यात्मक बिंदु है: तो विचार इस तरह निर्देशिका संरचना कुछ मिलता-जुलता है क्या करना है?

+1

कहना मुश्किल है। क्या आप नीचे की तरफ सोच सकते हैं? क्या यह एक फ़ोल्डर में इंटरमीक्स किए गए सभी मॉडलों के साथ भ्रमित हो जाएगा? – dqhendricks

+1

@dhehendricks: नहीं, वास्तव में नहीं। असल में यह प्रबंधन करना आसान हो जाएगा क्योंकि हमारे पास डेटाबेस इंटरफ़ेस के लिए एकमात्र फोकस पॉइंट होगा ... – Goro

+1

मॉडल ** ऐप्स के भीतर ** एक दूसरे पर निर्भर हो सकते हैं ठीक है। मॉडल निकालने का प्रयास क्यों करें? "अधिक सुंदरता" क्या है? 'app.models से आयात करें, यह' सुंदर दिखता है। आप इस पर कैसे सुधार कर सकते हैं? –

उत्तर

4

django book में निम्नलिखित पैराग्राफ मुझे लगता है कि है कि शायद एक अच्छा विचार नहीं है बनाता है (मैं बोल्ड स्वरूपण जोड़ा):

हालांकि, वहाँ एप्लिकेशन सम्मेलन के बारे में एक आवश्यकता है: यदि आप उपयोग कर रहे हैं Django के डेटाबेस परत (मॉडल), आपको एक Django ऐप बनाना होगा। मॉडल को ऐप्स के भीतर रहना चाहिए। इस प्रकार, हमारे मॉडल लिखना शुरू करने के लिए, हमें एक नया ऐप बनाना होगा।

+1

आप उद्धरण से कैसे अनुमान लगाते हैं कि मॉडलों को _the_ ऐप में रहने की आवश्यकता है जिसमें उनका उपयोग किया जाता है? क्या मॉडल मॉडल नहीं हो सका? – aaronasterling

+0

कानून का पत्र कभी-कभी इसके पीछे की भावना से अलग होता है। मॉडलों के मॉडल के साथ मॉडल मॉडल हो सकता है जिसमें इसमें सभी मॉडल थे। मुद्दा मोनोलिथिक राक्षस ऐप से बचने के लिए है जिसमें सबकुछ है। परंतु। आप निश्चित रूप से, सभी मॉडलों के साथ एक ऐप कर सकते हैं और अन्य सभी ऐप्स केवल दृश्य कार्यों का संग्रह हैं। लेकिन यह Django की * भावना * नहीं है। –

2

मुझे नहीं लगता कि यह एक विशेष रूप से अच्छा विचार है, हालांकि मैं अपील देख सकता हूं। आप ऐसे कई मॉडल शामिल करेंगे जिनका आप उपयोग नहीं कर रहे हैं यदि आप केवल अपने ऐप्स में से एक को इंस्टॉल करना चाहते हैं। मुझे लगता है कि उन मॉडलों को मॉडल में रखना सबसे अच्छा है जो वे सबसे अधिक संबंधित हैं।

यह व्यवस्थापक इंटरफ़ेस का उपयोग अधिक भ्रमित करने में भी कर सकता है। आप व्यवस्थापक के साथ मॉडल कहां पंजीकृत करते हैं? मॉडल के लिए आप व्यवस्थापक अनुकूलन कहां करते हैं?

+0

अच्छा बिंदु, लेकिन मुझे लगता है कि अगर यह ठीक से किया गया है, तो यह चीजों को कम करेगा: अगर हम सभी मॉडलों को अपने ऐप पर ले जाते हैं, तो हम सभी मॉडलों को शामिल करते हुए _that_ ऐप पर व्यवस्थापक ही रख सकते हैं। – Goro

3

निम्नलिखित @ jcollado के जवाब देने के लिए टिप्पणी में अच्छी तरह से फिट नहीं था इसलिए मैं इसे यहाँ डाल देता हूँ: फ़ाइलों

यह एक से संबंधित पूरी तरह से ठीक है भर में

https://docs.djangoproject.com/en/dev/topics/db/models/#models-across-files

मॉडल एक और ऐप से मॉडल के लिए मॉडल। ऐसा करने के लिए, मॉडल के शीर्ष पर संबंधित मॉडल आयात करें जो आपके मॉडल को रखता है। फिर, जहां भी आवश्यक हो, बस अन्य मॉडल वर्ग का संदर्भ लें। उदाहरण के लिए:

from geography.models import ZipCode 

class Restaurant(models.Model): 
    # ... 
    zip_code = models.ForeignKey(ZipCode) 
संबंधित मुद्दे

 संबंधित मुद्दे