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