代码改变世界

django迁移model到别的app中

  cmsd  阅读(1120)  评论(0编辑  收藏  举报

举例: 移动 users.AccessKey 到 authentication.AccessKey中

 

1. 移动models到新的app中

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

  

2. 原来app中添加migrations

复制代码
$ 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文件 

 

复制代码
$ 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等操作了,数据不会丢失

 

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

编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
历史上的今天:
2014-03-04 误卸载python2.4导致yum不能用后的修复
2014-03-04 网卡流量查看软件bmon
点击右上角即可分享
微信分享提示