2013年1月26日土曜日

djceleryをsouthと使ってschemamigrationが上手くいかない場合の対処法

Djangoのプロジェクトで、バックエンド処理にCeleryを使い始めました。
Southも使っています。

celeryとdjango-celeryはpipでインストールしました。


settings.pyはこんな感じです。
INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'django.contrib.admin',
    'django.contrib.humanize',
    'south',
    "kombu.transport.django",
    'djcelery',
    'myapp',
)
動かすにはdjcelery用のテーブルを作る必要があります。
manage.py schemamigration djcelery --init
しかし、pipでインストールした事により、djceleryは
/usr/local/lib/python2.7/dist-packages/djcelery
にインストールされるので、ユーザ権限でmigrationディレクトリが作成できません。

回避策は、それらサードパーティーのアプリをsouthの管理下から外すことです。
settings.pyに以下を書き足します。
SOUTH_MIGRATION_MODULES = {
    'django': 'ignore',    #kombu.transport.djangoのこと
    'djcelery': 'ignore',
}
あとは普通にmanage.py syncdbでOK。

kombu.transport.django が "django" になるのは若干気になるのだけど。

0 件のコメント:

コメントを投稿