我是新來South所以我想知道如果我需要調用我需要南非之前或之後調用執行syncdb遷移
./manage.py syncdb
或做
./manage.py schemamigration appname --auto
./manage.py migrate appname
是所有足夠cases South can handle on its own。
我是新來South所以我想知道如果我需要調用我需要南非之前或之後調用執行syncdb遷移
./manage.py syncdb
或做
./manage.py schemamigration appname --auto
./manage.py migrate appname
是所有足夠cases South can handle on its own。
南不是項目範圍。它是應用程序的廣泛。
有些應用程序使用南方,有些應用程序不使用它。
如果一個應用程序集成南,做數據庫的變化,你將使用
./manage.py schemamigration appname --auto
./manage.py migrate appname
但並非所有的應用程序都與南集成。
當您向項目中添加一個不使用南的新應用程序時,您需要爲這些應用程序調用./manage.py syncdb
。 (例如,django.contrib
應用)
總之,使用./manage.py syncdb
當一個應用程序確實爲南集成應用不使用南,./manage.py migrate
。
謝謝你的清晰解釋。我編輯你的答案來添加一些格式。 – 2011-06-14 01:08:09
我發現南方行爲混亂,直到我意識到南方更改syncdb行爲。一個安裝的syncdb是由South管理的應用程序無法運行的。所以你可以在網站上運行syncdb,即使它有一些由南部管理的應用程序。當你第一次安裝南時,你必須小心,syncdb和初始遷移是一致的,但是一旦你完成了,它很好的容錯。 – Nils 2012-03-20 17:07:03
需要注意的一點是,南遷移在應用程序的任何裝置加載之前運行。我剛剛遇到過這個問題,因爲我試圖運行一個假定initial_data.json fixture中的行已經加載的數據遷移。 – tobych 2013-01-03 20:16:20
當您創建或安裝新的應用程序MyApp的,應先執行以下命令:
./manage.py schemamigration MyApp --inital
./manage.py migrate MyApp
之後,每當你執行./manage.py syncdb
您將看到:
Syncing...
Creating tables ...
Installing custom SQL ...
Installing indexes ...
Installed 0 object(s) from 0 fixture(s)
Synced:
> south
> django.contrib.auth
> django.contrib.contenttypes
> django.contrib.sessions
> django.contrib.sites
> django.contrib.messages
> django.contrib.staticfiles
> django.contrib.admin
> django.contrib.admindocs
Not synced (use migrations):
- MyApp
(use ./manage.py migrate to migrate these)
你可以看到, manage.py syncdb
能夠區分South管理的應用(Not synced
部分)和不受South管理的應用(Synced
部分)。它還提醒您使用./manage.py migrate
。
的重要的一點是讓南執行./manage.py syncdb
前通過執行./manage.py schemamigration MyApp --inital
和./manage.py migrate MyApp
管理新的應用程序。
閱讀南文檔後,我有這個完全相同的問題。他們很好,但對這種關係的更清晰的解釋肯定不會出現問題。 – markdsievers 2012-08-09 23:19:34