【问题标题】:Django: prevent making migrations for some modelsDjango:防止对某些模型进行迁移
【发布时间】:2021-10-22 11:54:07
【问题描述】:

Django 3.2.6

我希望某些模型根本不进行迁移。

有可能吗?

我试过了:

1. https://docs.djangoproject.com/en/3.2/ref/models/options/#managed

类元: 托管 = 假

2.

 class PrimaryReplicaRouter:
     special_model_names = {'generalsettings', 'generalsettings', }

     def allow_migrate(self, db, app_label, model_name=None, **hints):
         if model_name in self.special_model_names:
             return False

         return True

它没有帮助:创建了迁移。它没有迁移。但是迁移变得不必要的嘈杂。

我从这里引用:

https://docs.djangoproject.com/en/3.2/topics/db/multi-db/#allow_migrate

makemigrations 总是为模型更改创建迁移,但如果 allow_migrate() 返回 False,则在 db 上运行 migrate 时,任何对 model_name 的迁移操作都将被静默跳过。

好吧,我不想对某些模型进行迁移。有可能吗?

【问题讨论】:

    标签: django django-models


    【解决方案1】:

    在你的类中,添加以下行:

    class Meta:
        abstract = True
    

    如果任何类 Meta 是 abstract true,django 不会为该模型创建迁移文件

    更多详情请点击这里:https://docs.djangoproject.com/en/3.2/ref/models/options/#abstract

    【讨论】:

    • 感谢您的回答。但这似乎对我没有帮助,因为我也需要 apps.get_model 。但是 get_model 没有找到抽象模型。
    • 是的,get_model 没有找到抽象模型,我猜你有现有的表?
    • 项目有点复杂。无论如何,我需要 get_model 才能工作。
    猜你喜欢
    • 1970-01-01
    • 2018-10-14
    • 1970-01-01
    • 2018-09-09
    • 1970-01-01
    • 2017-12-08
    • 2021-10-06
    • 2015-03-28
    • 2021-04-07
    相关资源
    最近更新 更多