【发布时间】:2026-02-16 14:15:01
【问题描述】:
我有一个 Django 应用程序,我想通过 Pipy 打包并提供给社区。它唯一的强依赖是 Django。它还与 Django CMS 很好地集成,并为 Django CMS 提供了额外的集成。我计划仅向安装了 Django CMS 的项目提供此附加功能。 (这就是我所说的弱依赖——没有它就可以安装和工作,但使用它会更痛苦。)具体来说,某些模型只有在 Django CMS 的基本模型 CMSPlugin 是已安装。
有没有好的/正确的方法来管理迁移?
我不能在包中包含依赖于CMSPlugin 的模型迁移,因为没有安装 Django CMS 的用户将无法运行它。
如果我省略了依赖于CMSPlugin 的迁移,使用 Django CMS 的用户将在首次安装时创建它们。然而,我担心,在包的每次更新中,当包被覆盖时,这些迁移将在pip install upgrade 上丢失。
【问题讨论】:
-
我能想到的一件事是在你的包的子应用程序中拥有这些额外的模型,即如果用户想要使用它,他们必须明确地将它添加到
INSTALLED_APPS(很常见在 Django 中的应用程序中看到,例如django.contrib.humanize)
标签: python django django-models django-cms