我正在使用Django运行生产服务器。我想删除不再需要的模型。迁移使将它们轻松应用于数据库变得容易。但是,我不想删除到目前为止积累的数据库。有没有办法认为迁移管理器已被删除,而没有实际删除数据库?
答案 0 :(得分:2)
有两种基本方法:更改运行migrate
的方式或更改迁移本身。
如果这是对现有数据库的一次性更改,则只需使用--fake
选项运行migrate
。
但是,如果您希望将此方法更广泛地应用,则--fake
方法过于脆弱。您必须始终记住要与其他迁移分开运行此迁移,否则会丢失数据。
在这种情况下,最好编辑迁移本身。具体来说,您可以将DeleteModel
操作转换为RunSQL
操作,该操作简单地记录删除操作是使用state_operations
参数完成的。
哪种方法可能取决于此问题的答案:如果要从头开始创建数据库,您是否希望未使用的表仍然存在?如果是这样,请编辑迁移文件。如果不是,请使用--fake
在每个现有数据库中运行一次。
答案 1 :(得分:1)
您需要的是运行带有migrate
选项的--fake
管理命令。
-假
将迁移标记为目标迁移(遵循上述规则) 按应用,但实际上没有运行SQL来更改您的 数据库架构。
这是供高级用户操纵当前 如果他们手动应用更改,则直接处于迁移状态;是 警告说,使用--fake冒着将迁移状态置于危险状态的风险 表格进入需要手动恢复的状态 迁移运行正常。
您可以参考Django document以获得更多说明。