如何跳过django的DeleteModel操作

问题描述 投票:0回答:2

我已经删除了一个模型,Django 创建了一个

DeleteModel
操作,我想跳过该操作,因为我还不想删除表,但我也不想保留模型。在这种情况下,我怎样才能跳过删除表格,但仍然删除模型?

我已尝试注释掉迁移文件中的操作,但下次运行

makemigrations
命令时,会重新创建操作。

python django
2个回答
0
投票

当你创建模型时,Django 创建一个表。如果你不需要模型,也只需删除表,我无法想象你需要一个表但不需要它的模型的场景。即使你可以做到这一点,一旦你删除了模型,你就无法再管理表了(因为这是数据库上 CRUD 操作的“Django 方式”)。

我认为最好的方法可能是不使用模型,或者当您项目的未来对象需要模型时修改它


0
投票

我真的没有看到你不使用的

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']
© www.soinside.com 2019 - 2024. All rights reserved.