nullableフィールドをnull値に設定できないように変更しています。新しい__init__
ルーチンは、適切なデフォルトを思い付くためにいくつかのカスタムの指輪を使ってフィールドがヌルになることを保証します。保存されたインスタンスを取得するときにORMがinitを呼び出しますか?
問題は、デフォルトの新しいルールを適用するために既存のデータを移行することが不可欠かどうか、またはレガシーオブジェクトが取得されるたびにこれらのルールが自動的に適用されるかどうかです。
Reading the source私は、ORMが保存されたデータのピクルスを復元したと思われるので、すべての古いレコードを更新する必要があります。しかし、もう一組の目が必要です。
保存されたインスタンスを取得するときにORMがinitを呼び出しますか?
私はあなたに答えがありませんが、何か似たようなことをする必要があるたびに、まずモデルファイルを更新してから、MySQL WorkbenchなどでDBを手動で更新します。何らかの理由で、私はちょうどDjangoをこれらの種類のものになると信じていません。ちょうど私の0.02。 – WayBehind
[docs](https://docs.djangoproject.com/en/1.9/ref/models/instances/#django.db.models.Model)は '__init __()'をオーバーライドしないことをお勧めします。フィールドをnot-nullableに変更すると、移行後に新しい制約に違反しないように古いデータを変更する必要があります。 – knbk