2016-05-05 3 views

答えて

1

使用して新しい移行を生成します。

python manage.py makemigrations 

上記は、モデルへの変更を検出しないと、マイグレーションクラスを生成するが、何もまだ任意のSQLを実行します。

デシベルにSQLを適用/生成するには:あなたは、DBを更新する前に実行されるSQLを確認したい場合は

python manage.py migrate 

migrate前にこれを実行します。

python sqlmigrate {app_label} {migration_module} 

EDIT :上記では、テーブル名の末尾に__oldという名前を付け、新しいテーブルを作成して古いテーブルから新しいテーブルにデータを挿入し、元のテーブルを削除します。そうではない、これはあなたが望むものであるかどうかわから..

別のオプションは、あなたが望むものを達成するために、プレーンSQLを使用することです:

ALTER TABLE table_name DROP CONSTRAINT constraint_name; 

しかし見つけ、新しい実行のために更新され、あなたの移行を保つために、覚えていますフィールドをユニークと宣言するマイグレーションクラスunique=Trueunique=Falseに変更します。他のサーバを更新する必要がある場合は、drop constraintコマンドを実行してすべてが同期するようにすることもできます。

+0

私は '' python manage.py makemigrations'を使うと "No changes detected"と表示されます –

+0

ありがとう、私はプレーンなSQLを使っていますが、明らかにdjangoでやりたいと思っています。 –

+0

これをsqlで修正し、後で移行スクリプトを適合させることができます。これまでの移行についてはどうしましたか?あなたは0001_initial.pyを持っていますか? – fips

1

モデルで値をFalseに変更してから、makemigrationsとmigrateを実行します。これにより、DB内のすべての項目が新しい値に更新されます。これは、あなたが新しいバージョンを使用していて、syncdbを使用していない場合です。

+0

実際に私はDjango 1.8.5を使用していますので、私は南を使用しません –

関連する問題