如何解决删除带有数据库模型的第三方 Django 应用程序的最佳方法是什么?
我想删除 Django 项目中的第三方应用程序。我的问题是,如果我只是从 INSTALLED_APPS
中删除它,它在我的数据库中创建的所有模型和关联表都将保留。
我知道我可以在之后手动删除那些表,但我希望这是自动化的(因为这个项目有多个正在运行的实例,我不想要求人们在升级时运行任何手动命令)。我想知道是否有推荐的或“干净”的方式来处理 Django 迁移。
我在我的一个应用程序(使用此第三方应用程序的应用程序)中创建了一个带有 migrations.DeleteModel(name='ThirdPartyModel')
的迁移文件,但它无法执行,因为该模型由另一个应用程序管理。
还剩下什么来编写带有 DROP TABLE thirdpartyapp_thirdpartymodel
和 DELETE FROM django_content_type WHERE app_label = thirdpartyapp AND model = thirdpartymodel
的 Runsql 迁移。
还有其他选择吗?这些类型的操作应该如何完成?
我使用的是 Django 3.0。
解决方法
首先确保您的所有模型都不依赖于该第三方应用,因此没有外键、一对一字段、多对多关系等。删除其中任何一个并进行迁移。
接下来您要迁移此应用对 zero
所做的更改,以便您可以运行以下命令:
python manage.py migrate <third_party_appname> zero
引用自 migrate
[Django docs] 上的文档:
这将恢复对数据库所做的所有更改,现在您可以自由地从 INSTALLED_APPS
中删除它。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。