我已经删除了一个模型,Django 创建了一个
DeleteModel
操作,我想跳过该操作,因为我还不想删除表,但我也不想保留模型。在这种情况下,我怎样才能跳过删除表格,但仍然删除模型?
我已尝试注释掉迁移文件中的操作,但下次运行
makemigrations
命令时,会重新创建操作。
当你创建模型时,Django 创建一个表。如果你不需要模型,也只需删除表,我无法想象你需要一个表但不需要它的模型的场景。即使你可以做到这一点,一旦你删除了模型,你就无法再管理表了(因为这是数据库上 CRUD 操作的“Django 方式”)。
我认为最好的方法可能是不使用模型,或者当您项目的未来对象需要模型时修改它
我真的没有看到你不使用的
models.py
中的模型存在问题,因此充当了占位符。
但无论如何,如果您想省略删除模型,您可以插入自定义数据库路由器以防止实际迁移:
# app_name/router.py
class PreventMigrationRouter:
def allow_migrate(self, db, app_label, model_name=None, **hints):
if app_label == 'my_app_label' and model_name == 'my_model_name':
return False
return None
与
my_app_label
和 model_name
是您不想删除的模型的 model._meta.app_label
和 model._meta.model_name
的结果。
然后将您的
PreventMigrationRouter
添加为 DATABASE_ROUTER
设置中的first 路由器[Django-doc]:
# settings.py
DATABASE_ROUTERS = ['app_name.routers.PreventMigrationRouter']