mmcnickle का समाधान काम कर सकता है और उचित लगता है लेकिन मुझे दो चरण की प्रक्रिया पसंद है। पहले चरण में आप तालिका का नाम बदलते हैं।
अपने मॉडल में वाकई में अपनी नई तालिका नाम दिया है:
class Meta:
db_table = new_table_name'
फिर mmcnickle तरह का सुझाव दिया, एक कस्टम माइग्रेशन बनाएँ:
python manage.py schemamigration xyz migration_name --empty
आप यहाँ के बारे में अधिक पढ़ सकते हैं: https://docs.djangoproject.com/en/dev/ref/models/options/
अब आपके कस्टम माइग्रेशन के साथ आपकी तालिका को आगे और पीछे की ओर बदलने के लिए लाइन भी जोड़ें:
db.rename_table("old_table_name","new_table_name")
यह तालिका नाम माइग्रेट और बदलने के लिए पर्याप्त हो सकता है लेकिन यदि आप क्लास मेटा कस्टम टेबल नाम का उपयोग कर रहे हैं तो आपको थोड़ा और करना होगा। तो मैं एक नियम के रूप में कहूंगा, बस सुरक्षित होने के लिए "old_table_name" के लिए अपनी माइग्रेशन फ़ाइल में एक खोज करें और नई तालिका नाम में मिलने वाली किसी भी प्रविष्टि को बदलें। उदाहरण के लिए, यदि आपने पहले क्लास मेटा कस्टम तालिका नाम का इस्तेमाल कर रहे थे, आप की संभावना देखेंगे:
'Meta': {'object_name': 'ModelNameYouWillChangeNext', 'db_table': "u'old_table_name'"},
तो तुम नया एक के लिए है कि पुराने तालिका नाम को बदलना होगा। इस बिंदु के बाद से तुम सब किया है तालिका नाम बदल सकते हैं और Django बता नई तालिका नाम देखने के लिए है अपने अनुप्रयोग चलाना चाहिए पर
python manage.py migrate xyz
:
अब आप के साथ माइग्रेट कर सकते हैं।
दूसरा चरण अपना मॉडल नाम बदलना है। इसकी कठिनाई वास्तव में आपके ऐप पर निर्भर करती है लेकिन मूल रूप से आपको केवल उस कोड को बदलने की आवश्यकता होती है जो पुराने मॉडल नाम को कोड में संदर्भित करता है जो नए मॉडल नाम का संदर्भ देता है। यदि आपने संगठन उद्देश्यों के लिए अपने पुराने मॉडल नाम का उपयोग किया है तो आपको शायद कुछ फ़ाइल नाम और निर्देशिका नामों को बदलने की भी आवश्यकता है।
ऐसा करने के बाद आपका ऐप ठीक चलना चाहिए। इस बिंदु पर आपका कार्य बहुत अधिक पूरा हो गया है और आपके ऐप को नए मॉडल नाम और नए टेबल नाम के साथ ठीक चलाना चाहिए। अगली बार जब आप इसकी ऑटो डिटेक्शन फीचर का उपयोग करके माइग्रेशन बनाते हैं तो अगली बार जब आप माइग्रेशन बनाते हैं तो पुरानी टेबल छोड़ने और स्क्रैच से नया बनाने का प्रयास करने की कोशिश की जाएगी क्योंकि यह आपके नए मॉडल नाम का पता चला है। इसे ठीक करने के आप एक और कस्टम माइग्रेशन बनाने की जरूरत:
python manage.py schemamigration xyz tell_south_we_changed_the_model_name_for_old_model_name --empty
अच्छी बात यहाँ है आप के बाद से आप पहले से ही अपने मॉडल का नाम बदल दिया है ताकि दक्षिण इस ऊपर उठाता है कुछ भी नहीं। बस आगे और पीछे की "पास" विस्थापित में साथ विस्थापित:
python manage.py migrate xyz
कुछ भी नहीं किया जाता है और दक्षिण अब यह अप टू डेट है एहसास है। प्रयास करें:
python manage.py schemamigration xyz --auto
और आप यह पता लगाता है कुछ भी नहीं
बदल गया है और आप इस व्यवस्थापक में किया चाहते हैं देखना चाहिए? यदि ऐसा है तो http://stackoverflow.com/questions/7413488/where-do-i-ustomize-the-heading-for-the-modeladmin-view/7414247#7414247 – Pannu
मदद चाहिए, हाँ, बहुत सच है! लेकिन मुझे अभी भी पेप -8 के अनुपालन के लिए मॉडल नामों को बदलने की जरूरत है। – whatf