要重新分发的Django应用程序没有manage.py(也不是settings.py,因为它是项目的一部分,而不是应用程序)。
如何在这种情况下运行schemamigration --auto?我是否需要将最小设置/ manage.py作为应用程序存储库的一部分才能执行此操作?有没有办法用django-admin.py做到这一点?
答案 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.py
或python migrate.py i
一起运行(i
可以是任何内容,它将使用--initial
代替--auto
如果有的话)。显然,你可以做更好的命令行选项parsin,但这对我有用。
编辑:更新了脚本,DATABASES
密钥丢失了。在这个项目中,我使用相同的数据库来测试代码,因此它不是完全随意的配置。