与南方的django可再发行应用程序

时间:2012-06-21 20:56:17

标签: django django-south

要重新分发的Django应用程序没有manage.py(也不是settings.py,因为它是项目的一部分,而不是应用程序)。

如何在这种情况下运行schemamigration --auto?我是否需要将最小设置/ manage.py作为应用程序存储库的一部分才能执行此操作?有没有办法用django-admin.py做到这一点?

2 个答案:

答案 0 :(得分:1)

您只需将应用添加到Installed_Apps

中的settings.py即可

然后您可以运行./manage.py schemamigration <app_name> --auto

如果该应用没有任何迁移,您需要先运行./manage.py schemamigration <app_name> --initial,然后再运行./manage.py schemamigration <app_name> --auto

答案 1 :(得分:0)

只是设法在我的一个项目中工作。这是适用于我的代码:

import sys

from django.conf import settings
from django.core.management import call_command


if not settings.configured:
    settings.configure(
        ROOT_URLCONF='',
        DEBUG=False,
        DATABASES={
            'default': {
                'ENGINE': 'django.db.backends.sqlite3',
                'NAME': 'test.db'
            }
        },
        INSTALLED_APPS=(
            'south',
            'my_app',
        )
    )

if __name__ == "__main__":
    call_command('schemamigration', 'my_app', 
                 initial=len(sys.argv) > 1,
                 auto=len(sys.argv) == 0

以上脚本保存为migrate.py并与python migrate.pypython migrate.py i一起运行(i可以是任何内容,它将使用--initial代替--auto如果有的话)。显然,你可以做更好的命令行选项parsin,但这对我有用。

编辑:更新了脚本,DATABASES密钥丢失了。在这个项目中,我使用相同的数据库来测试代码,因此它不是完全随意的配置。