質問

(表は、このタイプを使用することができるように)

毎回データベースをsyncdbの実行で作成されるように、Djangoアプリケーション用のカスタムpgsqlの種類を作成するための正しい方法は何ですか、すべてのカスタムタイプが前に任意のテーブルを作成するために作成されます?

私はまた、ジャンゴ・進化を使用しますが、それは適切な解決策ではない - それはsyncdbの実行後に実行されます。

...私は、標準的なフィールドタイプとモデルを定義して、タイプを作成し、進化の列タイプを変更するなどの回避策をやって想像することができますが、それは間違いなく素晴らしく、ソートのあいまいではありません

任意のアイデア?

役に立ちましたか?

解決

私はジャンゴでこれを行う方法があります信じていません。あなたはおそらく知っているように、post_syncdb信号が、pre_syncdbのための無信号があります。

だから私は2つだけの選択肢があると思う:ジャンゴにpre_syncdb信号をハッキングやファブリックのような自動化ツールを使用しますます。

それは、これを行うための正しい方法、おそらく単純なことではないだろうだ場合でも、独自のpre_syncdb信号をハッキングして、あなたはそれぞれの新しいDjangoのリリースをパッチを維持する必要があります。

一方、だけでなく、ファブリック、単純なような自動化ツールですが、それはあなたのプロジェクトに他の利点を提供しています。

例として、私の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と呼ばれる自分の環境に記載されているすべてのマシン上でコマンドを実行します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top