Skip to main content
 首页 » 编程设计

python之作为 Django 包维护者,我如何处理迁移

2024年10月01日36del

我一直在编写一个可通过 pip 安装的新 Django 包。我被困了一段时间,因为我不确定如何为我的特定包进行迁移,以便允许安装的正常工作流程是:

  1. pip 安装我的包
  2. 将我的包添加到您的“INSTALLED_APPS”
  3. 运行 python manage.py migrate

目前,我的包裹是这样的:

package_root/ 
    dist/ 
    actual_package/ 
        __init__.py 
        models.py 
    setup.py 

我面临的问题是,当我打包应用程序并使用 pip install dist/... 安装它,然后将其添加到我的示例应用程序“INSTALLED_APPS”时,运行 python manage.py migrate 不会为 actual_package/models.py 中的模型创建任何表,因此我(从用户的角度来看)需要运行 python manage.py makemigrations actual_package 首先,这并不理想。

关于如何在用户安装之前对迁移进行排序的任何想法都很棒。

请您参考如下方法:

1 - 在包中包含初始迁移 - 例如,actual_package/migrations/0001_initial.py

2 - 包括 python manage.py migrate actual_package 作为安装过程的一部分 - 无论是新的还是更新的。

3 - 如果您发布对 actual_package 的更新,请包括任何新的迁移。

这应该适用于新安装和更新。如果迁移已经完成(例如,更新但没有包含新的迁移),那么迁移命令就不会受到影响。

一键警告:确保您的包安装检查适当的 Django 版本。版本和代码之间有很多变化 - 以及迁移 - 因为一个版本可能不适用于另一个版本。