2009-09-18 8 views
10

मैं माइग्रेशन टूल के रूप में मेरे Django परियोजना में दक्षिण का उपयोग करना चाहते हैं, लेकिन मैं बहुउपयोगकर्ता परिदृश्य में दक्षिण का उपयोग कर के साथ समस्या है:django और विवादों के साथ दक्षिण प्रवास (0007_two ... और 0007_one) कैसे हल करें?

विभिन्न मशीनों पर समवर्ती काम कर रहे दो devs एक ही नंबर के साथ दो माइग्रेशन बनाने

  • 0007_extend_lizard.py

  • दूसरे पीसी पर: 0007_swap_name_adopter.py

पहला पीसी पर

इस मामले में मैं ./manage migrate --merge या ./manage migrate 0006 (रोलबैक) चला सकता हूं और फिर से./manage migrate चला सकता हूं। लेकिन जब मैं models.py में नया फ़ील्ड जोड़ना चाहता हूं और ./manage startmigration southdemo --auto चलाता हूं, तो दक्षिण को अंतिम माइग्रेशन से models = {} मेटा डेटा प्राप्त होता है, और इसमें पहले माइग्रेशन से जानकारी गुम होती है। इसका नतीजा पहले 0007 से फिर से (!!!) परिवर्तन बनाने के साथ माइग्रेशन 0008 बना रहा है।

इस समस्या को हल करने का सबसे अच्छा तरीका क्या है?

वर्तमान में मैं के बारे में दो विकल्प सोच रहा हूँ:

  • मैन्युअल एक फ़ाइल में दोनों 0007 प्रवास विलय और फिर विस्थापित (लेकिन कुछ एक पर अमल करना चाहिए "रोलबैक")

  • मैन्युअल लापता models = {} के लिए कदम 0007 माइग्रेशन के लिए मेटा और फिर 0008 में अगले --auto पूरी तरह से काम करेगा।

बेहतर विकल्प क्या है? या क्या मैं कुछ और याद कर रहा हूँ?

उत्तर

16

migrate --merge या रोलबैक-और-माइग्रेट करने के बाद, यदि आप जानते हैं कि हालिया माइग्रेशन में अब गलत जमे हुए मॉडल हैं, तो मैं जमे हुए मॉडल को अद्यतित करने के प्रयोजनों के लिए एक नया नो-ऑप माइग्रेशन तैयार करूंगा । बस ./manage.py startmigration myapp --empty freeze_noop चलाएं। अब जब आप वास्तविक माइग्रेशन को स्वत: माइग्रेट करना चाहते हैं तो आपके जमे हुए मॉडल अद्यतित होंगे।

हो सकता है कि यह नो-ऑप माइग्रेशन बनाने के लिए थोड़ा बदसूरत लगता है, लेकिन मेरे लिए यह आपके द्वारा सुझाए गए मैन्युअल इतिहास-संपादन विकल्पों में से किसी एक की तुलना में क्लीनर लगता है। आप एक डीवीसी में "मर्ज प्रतिबद्ध" के बराबर के रूप में नो-ऑप माइग्रेशन के बारे में सोच सकते हैं।

इस मुद्दे का उल्लेख this section of the South docs में किया जाना चाहिए; मैंने an issue for it दायर किया है। (अद्यतन: अब यह है।)

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