BETA

[Django]マイグレーションファイル作りたければdefaultを設定しろと怒られた

投稿日:2018-10-31
最終更新:2018-11-01

前提

Modelクラスで定義したDB設計から、マイグレーションファイルと呼ばれる中間ファイルを作成する。この中間ファイルをもとにマイグレートすることで、設計をDBに反映させる。

いざ、makemigrations

通常、python manage.py makemigrationsでマイグレーションファイルが作成されるが…。

$ python manage.py makemigrations
You are trying to add a non-nullable field 'name' to book without a default; we can't do that (the database needs something to populate existing rows).
Please select a fix:  
 1) Provide a one-off default now (will be set on all existing rows)
 2) Quit, and let me add a default in models.py

Null=Trueではないカラムを後から追加する場合、既に登録済みのデータを想定してデフォルト値を要求してくる。

1) デフォルトくれたら既存のレコードに追加しとくよ
2) 作るのやめて、自分でModelを修正してもらうよ

ということで、1を選択してみる。

Select an option: 1        # 1を選択
Please enter the default value now, as valid Python  
The datetime and django.utils.timezone modules are available, so you can do e.g. timezone.now()
>>> 'aaa'     # デフォルトを入力

適当な値を入力すると、無事にマイグレーションファイルが作成される。

技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
駆け出しエンジニアからエキスパートまで全ての方々のアウトプットを歓迎しております!
or 外部アカウントで 登録 / ログイン する
クランチについてもっと詳しく

この記事が掲載されているブログ

@ochocoの技術ブログ

よく一緒に読まれる記事

0件のコメント

ブログ開設 or ログイン してコメントを送ってみよう