首页 > 解决方案 > 使用 Django 2.x 时缩放或避免迁移?

问题描述

我刚刚开始使用 Django 框架,我读到 Django 开发人员从 2.0 版开始强制使用迁移。我可能是老派,但我喜欢我的数据库与我的代码分开。我一直将我的数据库与我的代码模型分开。我认为迁移不会随着工程团队的规模而扩展。

所以我的问题是2倍。

  1. 你不能在没有迁移的情况下使用 Django 2.0,因为我认为它不能很好地扩展并且不适合 CI/CD 管道吗?
  2. 如果我们无法避免数据库迁移,那么我们如何将它们集成到强大的 CI/CD 管道中,在该管道中,来自不同团队的不同开发人员可以更改模型。

标签: djangopython-3.xdjango-migrations

解决方案


是的你可以。您可以手动创建表并将 Django 设置为不管理您的表。

配置好 Django 项目后,只需在终端上运行python manage.py inspectdb > models.py,django 就会在配置的数据库中选择模型。如果您的项目将使用已经存在或遗留的数据库,这特别好

然后,您可以告诉 django 不要在模型的元选项上管理您的表:

class MyModel(models.Model):
    # your fields here

    class Meta:
       managed = False

在此处查看文档

但是,除非您有一个很好的方法来跟踪您的表更改,否则我必须说这是一个错误。Django 迁移可帮助您在此过程中跟踪模型更改。如果您需要回滚或了解您的数据库历史,这真的很有帮助。


推荐阅读