django遷移model到別的app中

舉例: 移動 users.AccessKey 到 authentication.AccessKey中python

 

1. 移動models到新的app中django

$ mv users/models/access_key.py authentication/models/

  

2. 原來app中添加migrationsvim

$ python manage.py makemigrations --empty users
$ vim users/migrations/0019_auto_20190304_1459.py
from django.db import migrations


class Migration(migrations.Migration):

    dependencies = [
        ('users', '0018_auto_20190107_1912'),
    ]
    # 重命名錶
    database_operations = [
        migrations.AlterModelTable(name='accesskey', table='authentication_accesskey'),
    ]
    # 聲明已刪除了表
    state_operations = [
        migrations.DeleteModel('accesskey'),
    ]

    operations = [
        migrations.SeparateDatabaseAndState(
            database_operations=database_operations,
            state_operations=state_operations)
    ]

 

3. 新的app生成 migrations,編輯生成的migrations文件 app

 

$ python manage.py makemigrations authentication
$ vim authentication/migrations/0001_initial.py
# Generated by Django 2.1.7 on 2019-02-28 08:07

from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
import uuid


class Migration(migrations.Migration):

    initial = True

    dependencies = [
        migrations.swappable_dependency(settings.AUTH_USER_MODEL),
        ('users', '0019_auto_20190304_1459'),
    ]

    state_operations = [
        migrations.CreateModel(
            name='AccessKey',
            fields=[
                ('id',
                 models.UUIDField(default=uuid.uuid4, editable=False,
                                  primary_key=True, serialize=False,
                                  verbose_name='AccessKeyID')),
                ('secret',
                 models.UUIDField(default=uuid.uuid4, editable=False,
                                  verbose_name='AccessKeySecret')),
                ('user', models.ForeignKey(
                    on_delete=django.db.models.deletion.CASCADE,
                    related_name='access_keys',
                    to=settings.AUTH_USER_MODEL, verbose_name='User')),
            ],
        ),
    ]

    operations = [
        migrations.SeparateDatabaseAndState(state_operations=state_operations)
    ]

 

4. 完成,能夠正常執行migrations等操做了,數據不會丟失ui

 

更多見:https://stackoverflow.com/questions/25648393/how-to-move-a-model-between-two-django-apps-django-1-7spa

相關文章
相關標籤/搜索