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の削除をトリガする方法についての提案がありますか?
なぜ--noinputで移行していますか? – Thomas
これは、私が人的なやりとりなしに本番サーバーに展開したいからです。私は、コードベースをリポジトリから、ファブリックスクリプトを使用して完全に自動化されたサーバに展開しています。これを行うには、私はここに人間の入力なしで解決策を探しています。 – yellowcap
次に、コマンドを複製するか、データマイグレーションを作成して、影響を受けるcontent_typesを手動で削除するだけです。 – Thomas