如何删除Django模型而不是数据库?

时间:2018-07-20 01:24:52

标签: django database django-migrations

我正在使用Django运行生产服务器。我想删除不再需要的模型。迁移使将它们轻松应用于数据库变得容易。但是,我不想删除到目前为止积累的数据库。有没有办法认为迁移管理器已被删除,而没有实际删除数据库?

2 个答案:

答案 0 :(得分:2)

有两种基本方法:更改运行migrate的方式或更改迁移本身。

如果这是对现有数据库的一次性更改,则只需使用--fake选项运行migrate

但是,如果您希望将此方法更广泛地应用,则--fake方法过于脆弱。您必须始终记住要与其他迁移分开运行此迁移,否则会丢失数据。

在这种情况下,最好编辑迁移本身。具体来说,您可以将DeleteModel操作转换为RunSQL操作,该操作简单地记录删除操作是使用state_operations参数完成的。

哪种方法可能取决于此问题的答案:如果要从头开始创建数据库,您是否希望未使用的表仍然存在?如果是这样,请编辑迁移文件。如果不是,请使用--fake在每个现有数据库中运行一次。

答案 1 :(得分:1)

您需要的是运行带有migrate选项的--fake管理命令。

  

-假

     

将迁移标记为目标迁移(遵循上述规则)   按应用,但实际上没有运行SQL来更改您的   数据库架构。

     

这是供高级用户操纵当前   如果他们手动应用更改,则直接处于迁移状态;是   警告说,使用--fake冒着将迁移状态置于危险状态的风险   表格进入需要手动恢复的状态   迁移运行正常。

您可以参考Django document以获得更多说明。