django - 如何重命名 Django 应用程序并将数据从一个应用程序迁移到另一个应用程序

标签 django migration database-migration

我有一个名为 app1 的 Django 应用程序,其中包含模型和迁移文件。
我将此应用程序重命名为 app2 并修复了所有导入、网址等...
我现在有 迁移文件 和表中的数据的问题。
如何以正确的方式编写 迁移 以确保:

  • 新安装 => 创建新表
  • 更新旧版本 => 创建新表,移动数据,删除旧表

  • 注1:有几个表有很多外键。
    这是我到目前为止的进展,我不确定我是否走在正确的道路上:
  • 我删除了所有旧的迁移
  • 我运行 python manage.py makemigrations 来生成新的迁移文件

  • 完成这两个步骤后,我可以安装我的应用程序,但旧版本仍然存在问题。
    问题: 迁移数据的最佳方式是什么?
    注 2:我不使用 South

    最佳答案

    我找到了一个有效的解决方案

  • 使用新外键和新应用依赖项修复旧迁移。
  • 强制旧迁移以旧应用程序名称创建表,因此在 migrations.CreateModel.options 中,添加 db_table: 'app1_table_name'
  • 在每个迁移文件中添加 replaces = [('app1', 'migration_file_name')] 。这将告诉 Django 当前迁移( app2.migration_file_name )将替换旧文件,这将防止 django 执行迁移两次。
  • 创建迁移文件以使用 migrations.AlterModelTable
  • 重命名表

    关于django - 如何重命名 Django 应用程序并将数据从一个应用程序迁移到另一个应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44957167/

    相关文章:

    django - 如何在 Django 项目中的 Tastypie 中实现登录模块

    django - 在将图像添加到存储位置之前,如何在 Django 中优化图像(文件上传)?

    ruby-on-rails - Rails 迁移 : Remove column from table

    android - 列类型 bool 值的房间数据库迁移问题

    python - 这是Django教程的问题还是包的问题,​​还是我的问题?

    python - Elastic Beanstalk 中用于接收 AWS Worker Tier 请求的 Django POST 监听器

    sql-server-2008 - 从SQL Server 2000迁移到2008 R2-如何

    wix - 如何从每个用户安装更改为所有用户安装?

    laravel - $table->unsignedInteger ('user_id' ) 和 $table->integer ('usre_id' )->unsigned() 有什么不同?

    Kubernetes 滚动部署和数据库迁移