如何删除Django模型而不是数据库?
Posted
技术标签:
【中文标题】如何删除Django模型而不是数据库?【英文标题】:How to delete the Django model but not the database? 【发布时间】:2018-12-28 06:02:41 【问题描述】:我正在使用 Django 运行生产服务器。我想删除不再需要的模型。迁移使将它们应用到数据库变得容易。但是,我不想删除到目前为止积累的数据库。有没有办法认为迁移管理器已经被删除而不实际删除数据库?
【问题讨论】:
【参考方案1】:有两种基本方法:更改运行 migrate
的方式,或更改迁移本身。
如果这是对现有数据库的一次性更改,那么您只需运行 migrate
和 --fake
选项即可。
不过,如果您想让它更广泛地应用,--fake
方法太脆弱了。您必须始终记住将此迁移与有丢失数据风险的其他迁移分开运行。
在这种情况下,最好编辑迁移本身。具体来说,您可以将 DeleteModel
操作转换为 RunSQL
操作,该操作仅将删除记录为使用 state_operations
参数完成。
走哪条路可能取决于这个问题的答案:如果您要从头开始创建数据库,您是否希望未使用的表仍然存在?如果是这样,请编辑迁移文件。如果没有,请使用 --fake
每个现有数据库运行一次。
【讨论】:
【参考方案2】:您需要运行带有--fake
选项的migrate
admin 命令。
--假的
将迁移标记到目标迁移(遵循上述规则) 如应用,但没有实际运行 SQL 来改变你的 数据库架构。
这是供高级用户操作当前 如果他们手动应用更改,则直接迁移状态;是 警告使用 --fake 会冒着迁移状态的风险 表进入需要手动恢复的状态 迁移运行正常。
更多解释可以参考Django document。
【讨论】:
以上是关于如何删除Django模型而不是数据库?的主要内容,如果未能解决你的问题,请参考以下文章
Django ClearableFileInput - 如何检测是不是删除文件