Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да преместите модел между две Django приложения (Django 1.7)

Това може да се направи сравнително лесно с помощта на 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)
    ]


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. COUNT(*) от множество таблици в MySQL

  2. Грешка при създаването на таблица:Имате грешка във вашия SQL синтаксис близо до 'order( order_id INT UNSIGNED NOT NULL AUTO_INCREMENT, user_id ' на ред 1

  3. Има ли недостатъци при използването на общ varchar(255) за всички текстови полета?

  4. MySQL получава позиция на ред в ORDER BY

  5. еквивалент на gene_series() в MySQL