2015-07-12 5 views
8

सबसे पहले, मैं Django माइग्रेशन के बारे में पूछ रहा हूं 1.7, south में नहीं।मैं Django माइग्रेट कमांड के साथ माइग्रेशन कैसे छोड़ सकता हूं?

मान लीजिए कि माइग्रेशन 001_add_field_x, 002_add_field_y है, और दोनों डेटाबेस पर लागू होते हैं। अब मैं अपना दिमाग बदलता हूं और दूसरा माइग्रेशन वापस करने का फैसला करता हूं और इसे दूसरे माइग्रेशन 003_add_field_z से बदल देता हूं।

दूसरे शब्दों में, मैं 001 और 003 को लागू करना चाहता हूं, 002 छोड़ना, मैं यह कैसे कर सकता हूं?

पीएस मुझे पता है कि मैं पीछे की तरफ 001 पर माइग्रेट कर सकता हूं, लेकिन 003 माइग्रेशन करने और माइग्रेट कमांड निष्पादित करने के बाद, 001 से 003 सभी लागू होंगे, है ना?

उत्तर

23

आप --fake विकल्प का उपयोग कर सकते हैं।

एक बार जब आप 0001 पर वापस लौटने आप

python manage.py migrate <app> 0002 --fake 

चला सकते हैं और उसके बाद

python manage.py migrate <app> #Optionally specify 0003 explicitly 

जो केवल 0003 इस मामले में लागू होगा चलाते हैं।

आप सभी पर्यावरण/अन्य डेवलपर्स के लिए इस प्रक्रिया का पालन नहीं करना चाहते हैं, तो आप सिर्फ प्रवास फ़ाइलों को हटा सकते हैं, और एक नया makemigration चलाते हैं, और उस फ़ाइल के लिए प्रतिबद्ध - और हाँ, --fake विकल्प के साथ migrate चला सकता हूँ

2

इस विशिष्ट मामले में लागू नहीं होता है, लेकिन अगर एक चाहता है या सभी लागू न किए गए माइग्रेशन को छोड़ करने की जरूरत है, इस के लिए इस्तेमाल किया जा सकता है:

python manage.py migrate --fake 

बस टाइपिंग का एक सा बचाता है।

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