【问题标题】:Customise Django makemigrations自定义 Django makemigrations
【发布时间】:2019-12-16 09:49:41
【问题描述】:

我正在尝试创建一个管理命令,该命令将创建两个迁移,一个用于添加模型、字段等,另一个用于删除,以便我可以在部署应用程序之前应用其中一个迁移,另一个在部署后应用已在所有服务器上。

有没有什么简单的方法可以在没有人工干预的情况下实现这一点?

【问题讨论】:

  • 您可以makemigrations 创建一个文件,然后根据需要自定义它...!?或者完全手工制作一个新的迁移文件。
  • 我正在尝试自动化这个过程。
  • 我有个奇怪的想法,这可能不是正确的方法。编写一个自定义的django-admin 命令,该命令将调用一个最终引用 shell 脚本的函数,该函数将执行从应用程序中删除当前迁移文件然后进行迁移的操作。要编写管理命令,请遵循:docs.djangoproject.com/en/3.0/howto/custom-management-commands 对于删除迁移:find . -path "*/migrations/*.py" -not -name "__init__.py" -delete find . -path "*/migrations/*.pyc" -delete

标签: django django-migrations


【解决方案1】:

您可以导入迁移文件,遍历Migration.operations 并根据您的要求将其拆分为两个文件。您还必须检查该迁移是否存在任何依赖关系并进行调整。

这仍然是一个 hack,很可能不会涵盖所有边缘情况。一个合适的解决方案可能涉及重写大块django.db.migrations

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-18
    • 2015-02-28
    相关资源
    最近更新 更多