2012-03-12 13 views
7

मैंने अपने models.py में बहुत कुछ बदल दिया, जिसमें बहुत से फ़ील्ड हटाने और दो कक्षाओं का नाम बदलने सहित। schemamigration --auto ठीक काम किया, लेकिन कोशिश कर रहा है migrate त्रुटियों का एक गुच्छा फेंक दिया।मैं दक्षिण (Django) से एक ऐप को "अनवरोधित" कैसे करूं?

मेरा पूरा कोड वर्तमान में विकास में है इसलिए मुझे डेटा खोने में बहुत कुछ नहीं लगता है। इसलिए मैं दक्षिण को एक ऐप को "अनवरोधित" या "अप्रबंधित" करना चाहता हूं ताकि मैं syncdb के साथ सभी तालिकाओं का पुनर्निर्माण कर सकूं।

या मैं सभी माइग्रेशन सूची को हटाने और schemamigration --initial फिर से कर सकता है।

उत्तर

11

हां, बस माइग्रेशन हटाएं और schemamigration --initial फिर से चलाएं। आप उत्पादन में जाने से पहले कि वैसे भी रूप में सामान्य कोर्स करना चाहिए। यदि आप कम से कम एक बार उत्पादन में जा चुके हैं, तो सभी माइग्रेशन को न हटाएं - केवल वर्तमान विकास चक्र में बनाए गए हैं और फिर संभावित एकाधिक लोगों की बजाय केवल एक माइग्रेशन प्राप्त करने के लिए schemamigration --auto चलाएं।

Fwiw, "unconvert" एक दक्षिण का उपयोग कर अनुप्रयोग, आप केवल "माइग्रेशन" निर्देशिका नष्ट करने के लिए है, लेकिन इस परिदृश्य में, कोई आवश्यकता नहीं है।

अद्यतन

यह बताया गया है कि पहले से आपका ऐप्लिकेशन माइग्रेट अगर आपके पास है, और आप सभी माइग्रेशन हटा सकते हैं और एक भी नया एक, दक्षिण डेटाबेस में अभी भी माइग्रेशन के बारे में शिकायत करेंगे उत्पन्न करते हैं। वास्तविक प्रक्रिया का पालन करना चाहिए:

  1. वर्तमान विकास चक्र में आपके द्वारा बनाए गए नवीनतम माइग्रेशन से ठीक पहले रोलबैक। उदाहरण के लिए, यदि आप पहले ही 0005 पर थे और आपने विकास कार्य के लिए तीन नए माइग्रेशन बनाए थे (अब 0008 पर), तो आप 0005 पर रोलबैक करेंगे। यदि सभी माइग्रेशन नए हैं, तो आप zero पर रोलबैक:

    python manage.py migrate yourapp zero 
    
  2. माइग्रेशन आप मर्ज करने जा रहे हैं के सभी को हटा दें। उपर्युक्त उदाहरण में, यह 0006, 0007, और 0008 होगा, या एक नए ऐप के लिए, माइग्रेशन निर्देशिका में सबकुछ लेकिन __init__.py होगा।

  3. आपके द्वारा अभी हटाए गए लोगों को कवर करने के लिए एक नया माइग्रेशन जेनरेट करें। यदि यह एक नया ऐप है, तो --initial का उपयोग करें, या यदि यह एक पूर्व-मौजूदा ऐप था, तो --auto का उपयोग करें।

    python manage.py schemamigration --initial yourapp 
    
  4. माइग्रेट

    python manage.py migrate yourapp 
    
+0

आह ठीक है, स्पष्टीकरण के लिए धन्यवाद। माइग्रेशन हटाने के लिए कोड क्या है? – hobbes3

+3

बस भौतिक रूप से फ़ाइल को हटा दें। कोई आदेश नहीं है - केवल सामान्य तरीका जिसे आप कुछ भी हटाते हैं। –

+0

आह ठीक है, मैं दक्षिण दस्तावेज लॉल से एक डिलीट कमांड खोजने की कोशिश कर रहा था। बहुत बहुत धन्यवाद। – hobbes3

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