django - 如何将 Django South 与从 egg 加载的第三方应用程序一起使用?

标签 django database-migration django-south

我正在使用 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/

相关文章:

Django写入数据库,IntegrityError

django - 部署使用 South 开发的 Django 应用程序堆栈?

python - Django,重置南迁移

python - Django Rest Framework 自定义字段只有一对值(没有字段名作为字典键)

django - 打开() "/root/project/static/*.css"失败(13 : Permission denied) nginx

entity-framework - 重置 Entity Framework 迁移

java - 如何使用 MyBatis 更新数据库?

python - 使用 Django/Python : ModuleNotFoundError: No module named 'pages' 创建初学者应用程序

python - "def __iter__(self): return iter(self.file)"是做什么用的?

java - 从表复制到表(更改主键)