Djangoでこれを行う方法があるとは思いません。おそらくご存じのとおり、信号はありますが、 にはpost_syncdb
信号がありませんpre_syncdb
。
したがって、Django に信号をハッキングするか、 Fabricpre_syncdb
のような自動化ツールを使用するという2 つのオプションしかないと思います。
独自のシグナルをハッキングするpre_syncdb
ことは、それが正しい方法であっても、おそらく簡単ではなく、新しい Django リリースごとにパッチを維持する必要があります。
一方、Fabric のような自動化ツールは単純であるだけでなく、プロジェクトに他の利点をもたらします。
例として、私の Fabfile の一部は次のようになります。
def createdb():
"Create a clean database"
run('createdb --encoding=UNICODE $(db_name) -O $(db_owner) -U $(db_owner)')
run('python manage.py syncdb --noinput')
syncdb の直前に次のようなものを追加します。
run('psql -U $(db_owner) $(db_name) < app/sql/custom_types.sql')
次のように入力するだけで準備完了です。
$ fab createdb
また:
$ fab cluster createdb
と呼ばれる環境にリストされているすべてのマシンでコマンドを実行しますcluster
。