2013-11-26 5 views
5

मैं django- दक्षिण में django प्रोजेक्ट में डेटाबेस टेबल माइग्रेट करने के लिए django-south का उपयोग कर रहा हूं।Django दक्षिण माइग्रेशन --इन इनपुट के साथ सामग्री को हटा नहीं देता है

# Renaming model from 'Foo' to 'Bar'                              
    db.rename_table('myapp_foo', 'myapp_bar')                               
    db.send_create_signal('myapp', ['Bar']) 

हालांकि, मैं fabric का उपयोग स्वचालित रूप से उत्पादन सर्वर करने के लिए अपने आवेदन को तैनात करने की है, और मैं किसी भी माइग्रेशन उपयोगकर्ता इनपुट के बिना चलाना चाहते हैं: और मैं एक मॉडल के रूप a previous question में चर्चा का नाम बदलने कर रहा हूँ। इस के लिए, मैं के रूप में

python manage.py migrate --noinput 

यह सिवाय इसके कि send_create_signal इस मोड में बासी CONTENTTYPES को दूर नहीं करता ठीक काम करता है इस प्रकार है noinput विकल्प के साथ प्रवास आदेश चला।

ऐसा इसलिए है क्योंकि django contenttype managament कमांड update_contenttypes इनपुट इनपुट दिए जाने पर केवल बालों की सामग्री को हटा देता है।

मैं अद्यतन दक्षिण-माइग्रेशन में अपडेट_contenttypes कमांड को दोहरा सकता हूं, लेकिन यह एक अच्छा समाधान प्रतीत नहीं होता है। क्या किसी के पास django कमांड में दोहराने के बिना सामग्री प्रकार को हटाने के तरीके को सुझाव देने के सुझाव हैं?

+0

आप - इनपुट के साथ माइग्रेट क्यों चल रहे हैं? – Thomas

+0

ऐसा इसलिए है क्योंकि मैं मानव संपर्क के बिना उत्पादन सर्वर पर तैनाती करना चाहता हूं। मैं भंडार से कोडेबेस को कपड़े स्क्रिप्ट का उपयोग कर पूरी तरह से स्वचालित सर्वर पर तैनात कर रहा हूं। ऐसा करने में सक्षम होने के लिए मैं यहां मानव इनपुट के बिना समाधान ढूंढ रहा हूं। – yellowcap

+1

तो आपको शायद कमांड को डुप्लिकेट करना चाहिए, या डेटामैपेशन बनाना चाहिए और प्रभावित सामग्री_types मैन्युअल रूप से हटा देना चाहिए। – Thomas

उत्तर

1

मेरे अनुभव में, manage.py syncdb --all चल रहा है कुछ काम करता है, लेकिन दक्षिण में शामिल होने पर हर समय नहीं। आप इसे जाने की कोशिश कर सकते हैं, क्योंकि यह अतीत में मेरे लिए काम करता है, निश्चित रूप से सामग्री-प्रकार तालिका से पुराने मॉडल को हटाते समय।

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