यह migrations.SeparateDatabaseAndState
. का उपयोग करके काफी आसानी से किया जा सकता है . मूल रूप से, हम एक ऐप के इतिहास से मॉडल को हटाने और इसे दूसरे में बनाने के लिए दो राज्य संचालन के साथ समवर्ती रूप से तालिका का नाम बदलने के लिए डेटाबेस ऑपरेशन का उपयोग करते हैं।
पुराने ऐप से निकालें
python manage.py makemigrations old_app --empty
माइग्रेशन में:
class Migration(migrations.Migration):
dependencies = []
database_operations = [
migrations.AlterModelTable('TheModel', 'newapp_themodel')
]
state_operations = [
migrations.DeleteModel('TheModel')
]
operations = [
migrations.SeparateDatabaseAndState(
database_operations=database_operations,
state_operations=state_operations)
]
नए ऐप में जोड़ें
पहले, मॉडल को नए ऐप के model.py में कॉपी करें, फिर:
python manage.py makemigrations new_app
यह एक सरल CreateModel
. के साथ एक माइग्रेशन उत्पन्न करेगा एकमात्र ऑपरेशन के रूप में संचालन। इसे SeparateDatabaseAndState
. में लपेटें ऑपरेशन ऐसा है कि हम तालिका को फिर से बनाने की कोशिश नहीं करते हैं। एक निर्भरता के रूप में पिछले प्रवास को भी शामिल करें:
class Migration(migrations.Migration):
dependencies = [
('old_app', 'above_migration')
]
state_operations = [
migrations.CreateModel(
name='TheModel',
fields=[
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
],
options={
'db_table': 'newapp_themodel',
},
bases=(models.Model,),
)
]
operations = [
migrations.SeparateDatabaseAndState(state_operations=state_operations)
]