一般在 Django 底下更動 model 的時侯,必須使用 syncdb
這個指令,把修改的 model 同步到 database 之中,但是有個限制,就是只有新的 model 才會被更新,已經存在的 model 就不會更動,此時就需要south
的幫忙。在 django 1.7 之後,這個 library 正式被整進到 django 之中。不過目前我手頭上的專案還是以 1.6 為主,所以還是要筆記一下。
初始化 south
安裝完 south 之後,第一次先執行 syncdb
把 south 相關的south_migrationhistory
新增到資料庫中。
$ ./manage.py syncdb
開始 migration
首先要介紹的是 schemamigration <APP_NAME> --initial
,這個指令會在 app 資料夾下面產生一個 migrations
資料夾。如果是第一次執行的話,裡面的檔名會是 0001_initial.py 開頭,裡面會記錄如何從無到有,把資料表建立起來。
def forwards(self, orm):
# Adding model 'UserModel'
db.create_table(u'dusers_dmodel', (
(u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
此時可以執行 syncdb 做一下確認
$ python manage.py syncdb …