sql >> データベース >  >> RDS >> Mysql

2つのDjangoアプリ間でモデルを移動する方法(Django 1.7)

    これは、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)
        ]
    


    1. 初心者向けのSSISチュートリアル:なぜ、何を、どのように?

    2. 適切なツールにより、チューニングが迅速に機能します

    3. 外部キーでリンクされたテーブルにデータを挿入する

    4. PostgreSQLで制約の名前を見つける方法