これは、migrations.SeparateDatabaseAndState
を使用してかなり簡単に行うことができます。 。基本的に、データベース操作を使用してテーブルの名前を変更すると同時に、2つの状態操作を使用して、あるアプリの履歴からモデルを削除し、別のアプリの履歴にモデルを作成します。
古いアプリから削除
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)
]