そこで、マイグレーションを行うプラグインの出番となります。どうもSouthが定番のようなので、これを入れます。
$ sudo pip install South
インストールに成功したら、settings.py を若干変更します。
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'myapp', #自作のアプリ
'south', #southをインストールする
)
個人的な趣味としては、import sys
import os
sys.path.append(os.path.join(os.path.dirname(__file__), "..", "south_migrations"))
SOUTH_MIGRATION_MODULES = {
'myapp': 'migrations.myapp',
}
という具合にして、マイグレーションのときに生成されるファイルが、プロジェクトのディレクトリの外につくられるようにしておくのがいいと思います。その方が、ローカルのプロジェクトをサーバー上にあげるときに都合がいいからです。settings.py の編集が終わったら、普通に、manage.py syncdb をします。これによって、southが利用するDBのテーブルがつくられます。SOUTH_MIGRATION_MODULESを明示的に指定した場合は、親となるモジュール(上記の例ではmigrations)が存在しないとエラーになるので、ここでつくっておきます。ここまでできたら、
$ python ./manage.py convert_to_south myapp
を実行します。これにより、既存のアプリをsouthで管理するように設定できます。今後、モデルに変更があった場合は、
$ python ./manage.py schemamigration myapp --auto
$ python ./manage.py migrate myapp
とやれば、たいていはsouthが何とかしてくれるはずです。
0 件のコメント:
コメントを投稿