मैंने हाल ही में अपने मॉडल को अपडेट किया है, एक बूलियनफिल्ड को इसमें जोड़ा है, हालांकि जब मैं करता हूं python manage.py syncdb
, तो यह मॉडल के लिए डेटाबेस में नया फ़ील्ड नहीं जोड़ता है। मैं इसे कैसे ठीक करूं ?
मैंने हाल ही में अपने मॉडल को अपडेट किया है, एक बूलियनफिल्ड को इसमें जोड़ा है, हालांकि जब मैं करता हूं python manage.py syncdb
, तो यह मॉडल के लिए डेटाबेस में नया फ़ील्ड नहीं जोड़ता है। मैं इसे कैसे ठीक करूं ?
जवाबों:
Django वर्तमान में स्वचालित रूप से ऐसा नहीं करता है। आपके विकल्प हैं:
python manage.py sql (appname)
, फ़ील्ड के लिए जोड़ा लाइन ढूंढें और मैन्युअल रूप से alter table
एसक्यूएल कमांड का उपयोग करके इसे जोड़ें । (यह आपको अपने वर्तमान रिकॉर्ड के लिए क्षेत्र के मूल्यों को चुनने की अनुमति भी देगा।)इन कदमों का अनुसरण करें:
जैसा कि शीर्ष उत्तर में सुझाव दिया गया था, मैंने दक्षिण का उपयोग करने की कोशिश की , और अस्पष्ट प्रवासन त्रुटियों के साथ एक घंटे की हताशा के बाद, इसके बजाय Django Evil के साथ जाने का फैसला किया ।
मुझे लगता है कि दक्षिण की तुलना में शुरुआत करना आसान है, और यह पूरी तरह से पहली बार जब मैंने टाइप किया ./manage.py evolve --hint --execute
, तो मैं इसके साथ खुश हूं।
हैवेंट ने थोड़ी देर में django का उपयोग किया, लेकिन मुझे याद है कि syncdb db तालिकाओं पर परिवर्तन कमांड करता है। आपको तालिका को छोड़ना होगा और फिर से चलना होगा और यह फिर से बनेगा।
संपादित करें: क्षमा करें परिवर्तन नहीं करता है।
alter table
कमांड नहीं चल रहा है , यह create table
कमांड चला रहा है ।
Django में 1.6
सबसे पहले हमने चलाया - python manage.py sql <app name>
फिर हमें दौड़ना होगा - python manage.py syncdb
यदि आप Apache और MySQL के साथ Django चलाते हैं, तो makemigrations के साथ माइग्रेशन करने के बाद Apache पुनरारंभ करें ।