与南部的Django可再发行的应用程序

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

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


您只需要将该应用添加到settings.py Installed_Apps

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

如果应用程序没有任何迁移,您将希望运行./manage.py schemamigration <app_name> --initial首先./manage.py schemamigration <app_name> --initial ,然后从./manage.py schemamigration <app_name> --auto运行。


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

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 --initial来运行( i可以是任何东西,并且它将使用--initial而不是--auto如果存在的话)。 显然,你可以做更有趣的命令行选项parsin,但这对我很有用。

编辑:更新脚本, DATABASES键丢失。 在这个项目中,我使用相同的数据库来测试代码,所以它不是一个完全任意的配置。

链接地址: http://www.djcxy.com/p/59775.html

上一篇: django redistributable app with south

下一篇: No module named core.management