如何确保我的 django 应用程序中只有 1 个模型创建迁移?

Posted

技术标签:

【中文标题】如何确保我的 django 应用程序中只有 1 个模型创建迁移?【英文标题】:How can I ensure only 1 model in my django app creates a migration? 【发布时间】:2016-05-10 13:00:16 【问题描述】:

Django 1.8 - 我写了一个新模型,我想为它创建一个迁移。我不希望应用程序中的其他模型由我的迁移创建,因为它们是代理。

    我尝试确保所有其他模型都有类 Meta: managed = False,这并没有阻止它们出现在我的迁移文件中。

    在我的数据库路由器中,我尝试使用allow_migrate,但同样,所有模型在我的迁移文件中都显示为“已创建”。

    def allow_migrate(self, db, app_label, model_name=None, **hints):
    
        if db == 'a123admin_rw' and app_label == 'article' and model_name == 'articlestat':
            return True
        elif db == 'a123admin_rw':
            return False
        return None
    

我应该怎么做才能确保在我运行 makemigrations 时只有我的模型得到迁移?

【问题讨论】:

您是否有任何理由不希望 managed = False 模型出现在您的迁移中?尽管迁移文件中存在非托管模型,但 Django 不会对非托管模型执行任何操作 - 即它们对您的数据库没有影响。 嗯...很高兴知道。理想情况下,我不希望出现关于这些模型的 SQL,让我放心,但如果它真的不会运行那个 SQL,那么......我想它必须这样做!谢谢! 【参考方案1】:

感谢这里发布的评论,我完成了它。这是我的最终报告:http://learnedandhacked.blogspot.ca/2016/02/a-story-of-migrating-new-model-in-app.html

【讨论】:

以上是关于如何确保我的 django 应用程序中只有 1 个模型创建迁移?的主要内容,如果未能解决你的问题,请参考以下文章

如何确保只有支持区域监控的设备才能在商店中看到我的应用?

Redux saga:我如何确保只有我的 saga 能够更新某个状态?

如何确保只有我的 javascript 客户端 Web 应用程序向 REST API 发出请求?

如何确保只有一个消费者实际使用已发布的消息?

如何确保只有在子线程启动后主线程才能继续?

如何在同一函数中为 2 个 Alamofire 请求只有 1 个完成处理程序