Migration のエラー対応内容

[動かして学ぶ | Python Django 入門 (Chapter 10)]

 

No migration to apply が出て、何が起こったのか不明だったため、メンターの方と確認して、下記のように対応しました。

 

 

1 ) settings_dev にsettings_commonの内容を追加

まず開発環境で作業して、その後 AWS にあげるところまでを書籍でやっているのですが、ひとまず settings_dev を読み込む設定をしているので  Databaseの設定が書かれていないことが原因と判断しました。

 

settings_common.py 作成時は settingsの内容をコピーしていたけども、settings_dev.pyは書籍の更新内容のみ記載していた。settings_common の import が機能していなかったのだから自力で検証できた内容だったかもしれない。

 

(ひとりでぐぐったときにはっきり settings を明示的に参照させてから切り分けろと書いてあったのにスルーしていた。。)

coderedirect.com

 

f:id:hoshikuzuloneliness:20211115235534p:plain

 

dev で common を import しているのですが、 PyCharm の画面上では反応がなく(色が変わらない)読み込んでいるのか不明です。

 

f:id:hoshikuzuloneliness:20211115235626p:plain

 

2) showmigrations の設定指定の方法を知らなかった

 

qiita.com

 

 

対処方法:
開発用設定(Database設定含むsettings_commonの内容を追加済み)を明示的に指定してターミナルで実行したところ、正常な結果が出力された。(3回目のマイグレーションを行ったので書籍とは異なり、0003 の更新内容が存在する)

 

実行コマンド:

python manage.py showmigrations --settings private_diary.settings_dev    

 

--settings でsettingsを指定できる。manage.pyのあるところから相対パスで private_diaryフォルダ下に settings_dev.pyがある。ここで private_diary/ と書きたくなるが python のルールでは private_diary. と記述する。(.py は不要)

 

結果:

account
 [X] 0001_initial
 [X] 0002_email_max_length
 [X] 0003_auto_20211107_0118
accounts
 [X] 0001_initial
admin
 [X] 0001_initial
 [X] 0002_logentry_remove_auto_add
 [X] 0003_logentry_add_action_flag_choices
auth
 [X] 0001_initial
 [X] 0002_alter_permission_name_max_length
 [X] 0003_alter_user_email_max_length
 [X] 0004_alter_user_username_opts
 [X] 0005_alter_user_last_login_null
 [X] 0006_require_contenttypes_0002
 [X] 0007_alter_validators_add_error_messages
 [X] 0008_alter_user_username_max_length
 [X] 0009_alter_user_last_name_max_length
 [X] 0010_alter_group_name_max_length
 [X] 0011_update_proxy_permissions
 [X] 0012_alter_user_first_name_max_length
contenttypes
 [X] 0001_initial
 [X] 0002_remove_content_type_name
diary
 (no migrations)
sessions
 [X] 0001_initial
sites
 [X] 0001_initial
 [X] 0002_alter_domain_unique