2013-11-26 13 views
5

django-southを使ってdjangoプロジェクトのデータベーステーブルを移行しています。 a previous questionで説明したように、私はモデルの名前を変更しています:Django southマイグレーションで--noinputはテーブルの名前を変更するときにcontenttypeを削除しません

# Renaming model from 'Foo' to 'Bar'                              
    db.rename_table('myapp_foo', 'myapp_bar')                               
    db.send_create_signal('myapp', ['Bar']) 

をしかし、私は自動的に本番サーバに自分のアプリケーションを展開するfabricを使用して、私はマイグレーションがユーザ入力なしで実行したいです。

python manage.py migrate --noinput 

これはsend_create_signalこのモードでは、古いcontenttypesのを削除しないことを除いて正常に動作しますが、次のようにこのために、私はNOINPUTオプションを指定して、移行コマンドを実行します。

これは、django contenttype managamentコマンドupdate_contenttypesは、入力があった場合に古いコンテンツタイプしか削除しないためです。

私は南の移行で直接update_contenttypesコマンドを複製できましたが、それは良い解決策のようには見えません。誰もがdjangoコマンドに何が繰り返されることなくcontenttypesの削除をトリガする方法についての提案がありますか?

+0

なぜ--noinputで移行していますか? – Thomas

+0

これは、私が人的なやりとりなしに本番サーバーに展開したいからです。私は、コードベースをリポジトリから、ファブリックスクリプトを使用して完全に自動化されたサーバに展開しています。これを行うには、私はここに人間の入力なしで解決策を探しています。 – yellowcap

+1

次に、コマンドを複製するか、データマイグレーションを作成して、影響を受けるcontent_typesを手動で削除するだけです。 – Thomas

答えて

1

私が経験したところでは、manage.py syncdb --allを実行すると、いくつかの機能が動作しますが、サウスが関与しているとは限りません。あなたは、過去に私のために働いていたように、確かにそれを与えてみてください。確かに、古いタイプのモデルをcontent-typesテーブルから削除するときです。

関連する問題