django - 使用 Django 2.x 时缩放或避免迁移?
问题描述
我刚刚开始使用 Django 框架,我读到 Django 开发人员从 2.0 版开始强制使用迁移。我可能是老派,但我喜欢我的数据库与我的代码分开。我一直将我的数据库与我的代码模型分开。我认为迁移不会随着工程团队的规模而扩展。
所以我的问题是2倍。
- 你不能在没有迁移的情况下使用 Django 2.0,因为我认为它不能很好地扩展并且不适合 CI/CD 管道吗?
- 如果我们无法避免数据库迁移,那么我们如何将它们集成到强大的 CI/CD 管道中,在该管道中,来自不同团队的不同开发人员可以更改模型。
解决方案
是的你可以。您可以手动创建表并将 Django 设置为不管理您的表。
配置好 Django 项目后,只需在终端上运行python manage.py inspectdb > models.py
,django 就会在配置的数据库中选择模型。如果您的项目将使用已经存在或遗留的数据库,这特别好
然后,您可以告诉 django 不要在模型的元选项上管理您的表:
class MyModel(models.Model):
# your fields here
class Meta:
managed = False
但是,除非您有一个很好的方法来跟踪您的表更改,否则我必须说这是一个错误。Django 迁移可帮助您在此过程中跟踪模型更改。如果您需要回滚或了解您的数据库历史,这真的很有帮助。
推荐阅读
- python - 从数组中选择大于模板的行
- c++ - 如何在使用基于范围的 for 循环遍历 std::unique_ptr 的 std::vector 时获取对象的所有权?
- python - 循环遍历一行中的每个项目并与另一行中的每个项目进行比较,然后将结果保存在新的 column_python 中
- javascript - 文本编辑器值在 React Js 中消失
- java - 正如 WildFly 文档中所见,什么是“类路径模式”?
- asp.net-mvc - 如果 ASP.NET Core 和 Web API 中的项目位于 ASP.NET MVC(框架)中,那么最好的开发方式是什么?
- visual-studio - 在 Visual Studio 中打开旧的 Github Commit
- c# - 如何将一个数字添加到一个 int 那而不是放在它旁边
- spring-data-jpa - 带有波浪号的 DynamoDB 列并使用 JPA 进行查询
- javascript - How to pass variable from php for() to ajax when clicking a button?