sql >> Database teknologi >  >> RDS >> Mysql

Sådan flyttes en model mellem to Django-apps (Django 1.7)

Dette kan gøres ret nemt ved at bruge migrations.SeparateDatabaseAndState . Grundlæggende bruger vi en databaseoperation til at omdøbe tabellen samtidig med to tilstandsoperationer for at fjerne modellen fra en apps historie og oprette den i en andens.

Fjern fra gammel 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)
    ]

Føj til ny app

Kopier først modellen til den nye apps model.py, og derefter:

python manage.py makemigrations new_app

Dette vil generere en migrering med en naiv CreateModel drift som den eneste operation. Pak det ind i en SeparateDatabaseAndState operation, så vi ikke forsøger at genskabe tabellen. Inkluder også den tidligere migrering som en afhængighed:

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. Hvad betyder det at bruge parenteser med en OR i SQL?

  2. PDO:MySQL-serveren er forsvundet

  3. Sådan fungerer NCHAR()-funktionen i SQL Server (T-SQL)

  4. Laravel Eloquent vs query Builder - Hvorfor bruge veltalende for at reducere ydeevnen