Django

2011-12-29 9 views
9

में मैनेजमेंट कमांड ओवरराइड करने वाले एकाधिक ऐप्स से निपटने में मुझे एक समस्या है जहां एक से अधिक ऐप एक Django प्रोजेक्ट में समान प्रबंधन कमांड को ओवरराइड करने का प्रयास कर रहा है।Django

  1. क्या इससे निपटने के लिए समझदार तरीके हैं?
  2. जो प्राथमिकता प्राप्त करता है - ऐप को पहले INSTALLED_APPS में परिभाषित किया गया था, या जिसे अंतिम रूप दिया गया था?
  3. क्या इसे आसानी से बदलने के बजाय सबसे हाल ही में परिभाषित प्रबंधन कमांड को प्रभावी ढंग से उपclass करना संभव है?

संदर्भ के लिए मैं django_pdb प्राप्त करने के लिए (github देखें) south और django.contrib.staticfiles के साथ और अधिक अच्छी तरह से काम करने के लिए कोशिश कर रहा हूँ।

+2

आप मौजूदा प्रबंधन आदेशों का नाम क्यों बदल रहे हैं? कृपया ऐसा मत करो। कृपया अपने आदेशों के लिए अद्वितीय नाम प्रदान करें और इस समस्या से बचें। –

+5

मुझे लगता है कि यह संदर्भ देने के लिए एक बहुत ही उचित बात है। (मौजूदा टेस्ट और रनरवर कमांड में - पीडीबी विकल्प जोड़ना) 'दक्षिण' और 'django.contrib.staticfiles' जैसे ऐप्स बिल्कुल ठीक करते हैं, इसलिए मुझे कंबल पर बेचा नहीं जाता है "प्रतिक्रिया न करें" प्रतिक्रिया। –

+0

@SLOTT अगर कोड डेवलपर नियंत्रण में पूरी तरह से है, तो यह एक बहुत ही मूर्ख सवाल है - आप बस उनमें से एक का नाम बदलते हैं। मुझे लगता है कि वह पूछने की कोशिश कर रहा है कि जब आप दो समुदाय ऐप्स का उपयोग करते हैं तो दोनों "load_sample_data" आदेश प्रदान करते हैं। – Ted

उत्तर

1

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

अपनी परियोजनाओं के लिए मैं लेना पसंद:

/myproject 
    /lib 
    /app1 
    /app2 
    /app3 

तो स्पष्ट रूप से/lib पथ के लिए setup.py में जोड़ने

import os 
PROJECT_PATH = os.path.realpath(os.path.dirname(__file__)) 

import sys 
lib_dir = os.path.join(PROJECT_PATH, 'lib') 
if lib_dir not in sys.path[:4]: 
    sys.path.insert(1, os.path.join(PROJECT_PATH, 'lib')) 

मैं शायद कहीं अधिक होने की संभावना औसत एक लेने के लिए की तुलना में ऐप, इसे इंस्टॉल करें, फिर इसे ठीक से काम करने के लिए 10% बदलें।

इसका लाभ यह है: 1) अधिकांश निर्भरता कोड के साथ शिप करती है और जीआईटी 2 में ट्रैक की जाती है) यदि आप एक ही मशीन से कई ऐप्स चला रहे हैं तो एक ऐप में अनपेक्षित रूप से बग का सिस्टम सिस्टम परिवर्तन के लिए कोई मौका नहीं है। 3) संशोधन इतिहास, ऐप में किसी और सब कुछ के साथ बदलने के लिए आसान है।

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

+0

सुझाव के लिए धन्यवाद। यह ठीक हो सकता है यदि आप किसी व्यक्तिगत प्रोजेक्ट पर काम कर रहे हैं, लेकिन यह आपकी मदद नहीं करता है यदि आपका लेखन एक पुन: प्रयोज्य ऐप है जिसे आप दूसरों को इंस्टॉल करना चाहते हैं। (जैसे मेरे उपयोग के मामले में) –

3

2.5 साल बाद, लेकिन यदि किसी के पास Google खोज के बाद भी एक ही समस्या है और भूमि है, तो मैंने उस मामले से निपटने के लिए एक छोटा django ऐप बनाया है: django-mcmo ('प्रबंधन कमांड एकाधिक ओवरराइड'), pypi पर उपलब्ध है। इसकी सीमाएं हैं लेकिन अपेक्षित काम करती हैं।

डीजेंगो 1.4 से 1.8 और पीई 2 और 3 के साथ काम करता है, योगदान bitbucket repo पर आपका स्वागत है।