不要为 Django 模型应用现有迁移

Posted

技术标签:

【中文标题】不要为 Django 模型应用现有迁移【英文标题】:Don't apply existing migrations for a Django model 【发布时间】:2017-03-20 12:19:26 【问题描述】:

我需要告诉 Django 不要为模型应用已经存在的迁移。有什么方法可以实现吗?

为什么:我在 django.contrib.auth 之上进行了一些自定义。有了这些,Group 模型将被闲置。但是,它的迁移包含在 auth 应用程序中。与User 不同,Group 不是swappable

【问题讨论】:

【参考方案1】:

您可以设置MIGRATION_MODULES,django 将使用设置目录中的迁移应用程序

MIGRATION_MODULES = 'django.contrib.auth': 'local_package'

【讨论】:

太好了,谢谢!【参考方案2】:

您可以简单地编辑迁移文件。 因此,只需将您不想应用的部分注释掉即可。

您也可以将您的模型设置为 managed=False ,但我不确定这是否是您需要的。

【讨论】:

编辑迁移可能是一种选择,它们是否属于我。但是它们在django.contrib.auth,因此我不想拥有自己的带有django分支的存储库:(Meta中的managed=False阻止创建迁移。 我没有看到问题。请更清楚地描述您拥有什么以及您想要什么。 问题是这样的:github.com/django/django/tree/master/django/contrib/auth/… 这些迁移是 Django 附带的。当我需要在生产环境中部署我的项目时,我会从 pip 安装 Django。

以上是关于不要为 Django 模型应用现有迁移的主要内容,如果未能解决你的问题,请参考以下文章

测试使用南迁移的 Django 应用程序

如何使用现有模型和迁移恢复 Django 项目的转储数据库备份?

将现有 auth.User 数据迁移到新的 Django 1.5 自定义用户模型?

使 django 项目文件夹的迁移不起作用

如何使用 Python 迁移将 Heroku Django 应用程序的新模型表添加到远程 Heroku Postgres?

如何将现有 CharField 与数据迁移到 Django 中的 IntegerField