0

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

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

4

2 回答 2

1

您只需要将应用程序添加到您Installed_Appssettings.py

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

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

于 2012-06-21T21:04:34.657 回答
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.pyor运行python migrate.py ii可以是任何东西,如果存在,它将使用--initial而不是--auto)。显然,您可以执行更高级的命令行选项解析,但这对我有用。

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

于 2013-08-12T09:23:35.650 回答