Django应用程序的目的是重新分配没有manage.py(也不settings.py,因为它是该项目的一部分,而不是应用程序)。django可重新发布的应用程序与南
如何在此场景中运行schemamigration --auto?为了做到这一点,我需要将最小设置/ manage.py作为应用程序存储库的一部分吗?有没有办法做到这一点与django-admin.py?
Django应用程序的目的是重新分配没有manage.py(也不settings.py,因为它是该项目的一部分,而不是应用程序)。django可重新发布的应用程序与南
如何在此场景中运行schemamigration --auto?为了做到这一点,我需要将最小设置/ manage.py作为应用程序存储库的一部分吗?有没有办法做到这一点与django-admin.py?
你只需要在应用程序添加到您的Installed_Apps
在settings.py
然后你可以运行./manage.py schemamigration <app_name> --auto
如果应用程序没有任何迁移,你会想运行./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.py
或python migrate.py i
运行(在i
可以是任何东西,它会使用--initial
代替--auto
如果存在的话)。显然,你可以做更有趣的命令行选项parsin,但这对我很有用。
编辑:更新了脚本,DATABASES
键丢失。在这个项目中,我使用相同的数据库来测试代码,所以它不是一个完全任意的配置。
该应用没有settings.py或manage.py(这是问题)。应用程序通常只是包含urls.py,models.py等包的项目(manage.py,settings.py) – Mark
应用程序只是一组可以添加到项目中的视图,模型和模板。项目是Django实例的设置集合,以及manage.py文件所在的位置。您需要将该应用程序添加到现有项目或为其创建一个。请参阅此答案,了解应用程序与项目之间差异的说明:http://stackoverflow.com/a/734321/992040 – nates
是的,我明白这一点。但是可重新分发的应用程序中的模型本身可能具有南迁移。目前我无法找到具有模型迁移的可插入应用程序的示例。理想情况下,应用程序存储库中不会包含项目工件。 – Mark