【问题标题】:How to use Django South with third party apps loaded from egg?如何将 Django South 与从 egg 加载的第三方应用程序一起使用?
【发布时间】:2012-01-31 17:21:16
【问题描述】:

我正在使用来自 Easy Install / Pip .egg 文件的 Django Activity Stream 第三方应用程序。这个特定的应用程序需要在我的项目其余部分发生更改时不断更改和更新表格,因为我需要新模型上的额外流。

如果我想使用 South 来帮助我跟踪和更新这些更改,我有哪些选择?将外部应用程序目录复制到我的项目目录中的唯一选择,从而使我的不同 Django 项目的维护稍微困难一些?我找到了this related question,但这并不能真正回答您从egg 运行时的情况。

简单地说,我只需要 South 在我指定的项目中使用单独的 migrations 目录。这可能与南方有关吗?

更新

好吧,我以为我在 settings.py 中执行此操作得到了答案:

SOUTH_MIGRATION_MODULES = {
    'books': 'myproject.app_name.migrations',
}

但现在南方抱怨说

为 actstream 指定的迁移模块“myproject.app_name.migrations”无效;父模块不存在。

我在我的项目中为应用程序创建了一个空文件夹,以及一个__init__.py,但这并没有什么区别。我做错了什么?

【问题讨论】:

    标签: django database-migration django-south


    【解决方案1】:

    答案最终是在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',
    }
    

    迁移目录现在可以保存任何第三方应用迁移。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-26
      • 1970-01-01
      • 2011-04-25
      • 2013-10-12
      • 1970-01-01
      • 1970-01-01
      • 2022-10-12
      • 1970-01-01
      相关资源
      最近更新 更多