我正在使用 Django Activity Stream来自 Easy Install/Pip .egg
文件的第三方应用程序。这个特定的应用程序需要在我的项目的其余部分发生变化时不断更改和更新表格,因为我需要新模型的额外流。
如果我想使用 South 来帮助我跟踪和更新这些更改,我有哪些选择?将外部应用程序目录复制到我的项目目录中是唯一的选择,从而使我的不同 Django 项目的维护稍微困难一些吗?我找到了 this related question ,但这并不能真正回答您从 egg
运行时的情况。
简单地说,我只需要 South 在我指定的项目中使用单独的 migrations
目录。这可能与南方有关吗?
更新
好吧,我以为我在 settings.py 中这样做得到了答案:
SOUTH_MIGRATION_MODULES = {
'books': 'myproject.app_name.migrations',
}
但现在南方提示说
The migration module specified for actstream, 'myproject.app_name.migrations', is invalid; the parent module does not exist.
我在我的项目中为应用程序创建了一个空文件夹,以及一个 __init__.py
,但这没有任何区别。我做错了什么?
最佳答案
最终的答案是在 settings.py
中执行此操作:
SOUTH_MIGRATION_MODULES = {
'books': 'myproject.app_name.migrations',
}
但是,由于我使用 site.addsitedir(path('apps'))
将我的应用程序所在的目录添加到 python 路径,所以我不需要 myproject
部分。但是,当然,一旦您删除 myproject
部分,South 就会再次使用该应用程序的 egg 安装版本。因此,我的解决方案只是在我的项目中创建一个名为 migrations
的新目录(记住 __init__.py
),并更改 settings.py
像这样:
SOUTH_MIGRATION_MODULES = {
'books': 'myproject.migrations.app_name.migrations',
}
迁移目录现在可以保留任何第三方应用迁移。
关于django - 如何将 Django South 与从 egg 加载的第三方应用程序一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8699229/