來自stackoverflow使用者Ken Cochrane的解決方案以及其他
有人在stackoverflow上問到以上問題,ken給了一個非常nice的詳盡答案。他提出在不同情形下使用south的正確方式,如下:
1)建立一個沒有資料庫的新項目時
1、建立資料庫
2、將south添加到INSTALLED_APPS
3、運行syncdb命令,它將django和south的資料表加入到資料庫中
4、將你建立的apps添加到INSTALLED_APPS
5、對每個app分別運行“python manage.py schemamigration app_name --initial”,它將在每個app的目錄下建立migration目錄和相應的檔案
6、然後運行“python manage.py migrate app_name”,這一步將app的資料表加入到資料庫中
2)在帶有資料庫的已存項目中使用south
1、將south加入到INSTALLED_APPS中
2、運行syncdb,它將south的資料表加入到資料庫中
3、對每個app分別運行python manage.py schemamigration app_name --initial,它將在每個app的目錄下建立migration目錄和相應的檔案
4、對每個app分別運行“python manage.py migrate app_name 0001 --fake”,該命令不會對資料庫做任何操作,只是欺騙一下south,讓它在south_migrationhistory表中添加一些記錄以便於下次你想創造migration檔案的時候所有東西都已搞定。
3、在沒有資料庫的已存項目中使用south
1)建立資料庫
2)將south加入到INSTALLED_APPS中
3)對每個app分別運行“python manage.py schemamigration app_name --initial”,它將在每個app的目錄下建立migration目錄和相應的檔案
4)運行syncdb,它將所有沒有migrations的apps加入到資料庫中
5)然後運行“python manage.py migrate”命令,它將對你的所有apps運行遷移操作。
ken的答案不可謂不詳盡,如果你仍然有問題,那麼可以點擊下面的連結去stackoverflow看看他的原文,以及別人的答案:點我前往