2011-08-29 5 views
15

South/Djangoを使用して、データベース内に既存の行があるモデルにUNIQUENOT NULL列を追加しようとしている問題に遭遇しています。 。 Southでは、NOT NULLであるため、列のデフォルトを指定するように求められます。しかし、それにはUNIQUEという制約もあるので、models.pyのフィールドにデフォルトを追加することはできません。また、すべての行で同じになるため、一回限りの値を指定することもできません。South:NULLでないユニークな列のマイグレーションを実行

これを回避するには、まずヌル可能な列を作成し、移行を適用し、その列に一意の値を持つ既存の行を挿入するスクリプトを実行し、次に別の移行を追加してUNIQUEという制約があります。

しかし、同じことを達成するより良い方法はありますか?

答えて

13

はい、これはあなたが取るべきアプローチです。あなたは、このためにschemamigration - > datamigration - > schemamigrationを行うべきです。残念ながら、SQLでそれを行う方法がない場合、南はそれを行うこともできません。

関連する問題