2010-01-13 21 views
16

तो मेरे Django प्रोजेक्ट में मेरे पास कुछ अलग-अलग ऐप्स हैं, जिनमें से प्रत्येक अपने मॉडल, दृश्य, टेम्पलेट इत्यादि के साथ हैं। इन ऐप्स को संवाद करने के लिए एक अच्छा तरीका ("Django" तरीका) क्या है?ऐप्स में django मॉडल का उपयोग कर?

एक विशिष्ट उदाहरण एक मीटिंग्स ऐप होगा जिसमें बैठक के लिए एक मॉडल होगा, और मेरे पास एक होम ऐप है जिसमें मैं होम पेज पर शीर्ष 5 मीटिंग्स प्रदर्शित करना चाहता हूं।

क्या होम ऐप का दृश्य मीटिंग्स ऐप के मॉडल से पूछताछ कर सकता है?

ऐसा लगता है कि यह कुछ रेखा पार कर रहा है और Django में इस तरह की चीजों को करने के लिए एक और अधिक युग्मित तरीका हो सकता है।

किसी भी मदद की बहुत सराहना की है!

+0

[डीजेगो ऐप्स के बीच मॉडल साझा करना] के संभावित डुप्लिकेट (http://stackoverflow.com/questions/4137287/sharing-models-between-django-apps) –

उत्तर

16

किसी बिंदु पर आपके ऐप्स को कोई भी काम करने के लिए जोड़े को जोड़ना होगा। आप इसके चारों ओर नहीं मिल सकते हैं।

+1

हाँ मैंने थोड़ी सी कल्पना की। धन्यवाद। –

1

क्या होम ऐप का दृश्य मीटिंग्स ऐप के मॉडल से पूछताछ कर सकता है?

हाँ, ऐसा ही हुआ है। यदि आप वास्तव में चीजों को कम करना चाहते हैं, तो आप अपना Home ऐप जेनेरिक विदेशी कुंजी और कुछ प्रकार के जेनेरिक टेम्पलेट सिस्टम का उपयोग कर सकते हैं, लेकिन वास्तव में कोई अच्छा कारण नहीं है, जब तक कि आपके घर के ऐप को प्लग करने योग्य और काम करने की भव्य योजना न हो अन्य विभिन्न Django ऐप्स का एक गुच्छा।

कसकर युग्मित डीजेंगो ऐप्स लिखना वास्तव में आसान है, और डीकॉप्लेड डीजेंगो ऐप्स लिखना वास्तव में कठिन है। जब तक आपके पास कोई कारण न हो, तब तक निर्णायक न हों, और आप स्वयं को बहुत से काम (और खुशी!) बचाएंगे।

+5

"कड़ाई से युग्मित डीजेंगो ऐप्स लिखना वास्तव में आसान है, और डीजॉन्ग डीजेंगो ऐप्स लिखना वास्तव में कठिन है" - मैं सुनता हूं कि आप यहां क्या कह रहे हैं ... "जब तक आपके पास कोई कारण न हो, तब तक decouple मत करो, और आप स्वयं को बचाएंगे बहुत सारे काम "- क्या यह सिस्टम को रखने के ध्वनि सॉफ़्टवेयर इंजीनियरिंग सिद्धांतों के खिलाफ नहीं है, जितना संभव हो सके उतना ही पहले (पहले स्थान पर)? –

0

हां। मुझे लगता है कि एक डिजाइन सुविधा है। सभी मॉडल बैकएंड साझा करते हैं, इसलिए आपको अलग-अलग ऐप्स में समान नाम वाले दो मॉडल रखने के लिए अतिरिक्त कार्य करना होगा।

परियोजनाओं मॉडल

1

तो यह मेरे थे, मुझे लगता है कि वांछित आउटपुट पैदा करता है अपनी बैठक अनुप्रयोग में एक टेम्पलेट टैग बनाना होगा साझा करने और शामिल नहीं होना चाहिए कि घर एप्लिकेशन की टेम्पलेट में टेम्पलेट टैग।

इस तरह आप उन्हें केवल एमवीसी के व्यू हिस्से में जोड़ रहे हैं और यदि आप मीटिंग ऐप में अपने मॉडल बदलते हैं तो इसे बनाए रखना आसान बनाता है।

3

जितना संभव हो उतना decoupling को प्राप्त करने,

आप एक परियोजना विशिष्ट एप्लिकेशन होना आवश्यक है, जो एक-दूसरे के बीच सब ऊपर hooking काम करता है।

एक decoupled ऐप्स में नए मॉडल बनाने के लिए मॉडल से संकेतों का उपयोग करने में मदद करता है। लेकिन इससे बहुत कुछ करना मूर्ख है।

1

आपके विशिष्ट उदाहरण के लिए, मैं एक Django templatetag का उपयोग करूंगा।

अपने मीटिंग्स ऐप में टेम्पलेटैटैग "display_top_meetings" रखने के बाद, और इसे अपने इंडेक्स टेम्पलेट से {{ display_top_meetings 5 }} पर कॉल करके, इसे पहले लोड करें।

आप यहाँ templatetags के बारे में अधिक पढ़ सकते हैं:

Django Official documentation about TemplateTags

B-List's article on writting 'better template tags'

मैं इस मदद आशा!

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