sql >> Databasteknik >  >> RDS >> Mysql

Hur man flyttar en modell mellan två Django-appar (Django 1.7)

Detta kan göras ganska enkelt med migrations.SeparateDatabaseAndState . I grund och botten använder vi en databasoperation för att byta namn på tabellen samtidigt med två tillståndsoperationer för att ta bort modellen från en apps historia och skapa den i en annans.

Ta bort från gammal app

python manage.py makemigrations old_app --empty

I migreringen:

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)
    ]

Lägg till i ny app

Kopiera först modellen till den nya appens model.py, sedan:

python manage.py makemigrations new_app

Detta kommer att generera en migrering med en naiv CreateModel drift som enda operation. Slå in det i en SeparateDatabaseAndState operation så att vi inte försöker återskapa tabellen. Inkludera även den tidigare migreringen som ett beroende:

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. SQL för att generera en lista med siffror från 1 till 100

  2. Simulera ORDER BY i SQLite UPDATE för att hantera unikhetsbegränsningar

  3. Problem med att ställa in en anpassad primärnyckel i en Rails 4-migrering

  4. Hur anger du ett annat portnummer i SQL Management Studio?