前提・実現したいこと
migrate時のエラーを解決したいです。
あとmakemigrationsしたときに以下のような指示が出てきた場合、どう処理するのが良いのかを教えていただきたいです。
発生している問題・エラーメッセージ
まずmakemigrationsをしたときに以下のような指示が出てきたのであまりよく考えずにdefaultをtimezone.nowに設定しました。(本当にそうしているのかもよくわかっていないです。)
$ python3 manage.py makemigrations You are trying to change the nullable field 'auther' on mahjong_uma_oka_model to non-nullable 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 with a null value for this column) 2) Ignore for now, and let me handle existing rows with NULL myself (e.g. because you added a RunPython or RunSQL operation to handle NULL values in a previous data migration) 3) Quit, and let me add a default in models.py Select an option: 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 Type 'exit' to exit this prompt >>> timezone.now You are trying to change the nullable field 'auther' on mahjongplayermodel to non-nullable 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 with a null value for this column) 2) Ignore for now, and let me handle existing rows with NULL myself (e.g. because you added a RunPython or RunSQL operation to handle NULL values in a previous data migration) 3) Quit, and let me add a default in models.py Select an option: 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 Type 'exit' to exit this prompt >>> timezone.now You are trying to change the nullable field 'auther' on mahjongrecordmodel to non-nullable 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 with a null value for this column) 2) Ignore for now, and let me handle existing rows with NULL myself (e.g. because you added a RunPython or RunSQL operation to handle NULL values in a previous data migration) 3) Quit, and let me add a default in models.py Select an option: 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 Type 'exit' to exit this prompt >>> timezone.now Migrations for 'mahjongrecord': mahjongrecord/migrations/0017_auto_20200731_1824.py - Alter field auther on mahjong_uma_oka_model - Alter field auther on mahjongplayermodel - Alter field auther on mahjongrecordmodel
そして続けてmigrateしたところエラーが発生してしまいました。
ryu1maniwa@MyComputer:/mnt/c/Users/ryu1m/Desktop/Django 開発/mahjongproject_vol5_user$ python3 manage.py migrate ・ ・ ・ TypeError: Field 'id' expected a number but got datetime.datetime(2020, 7, 31, 18, 24, 47, 215187, tzinfo=<UTC>).
###ソースコード
manage.pyに以下のようなget_user_model()を継承するmodels.ForeignKeyを3つ作成しました。
#####manage.py
python
1class MahjongPlayerModel(models.Model): 2 auther = models.ForeignKey( 3 get_user_model(), 4 on_delete=models.CASCADE, 5 ) 6 player1 = models.CharField(max_length = 10, default = 'player1') 7 player2 = models.CharField(max_length = 10, default = 'player2') 8 player3 = models.CharField(max_length = 10, default = 'player3') 9 player4 = models.CharField(max_length = 10, default = 'player4')
試したこと
autherのdefault=0にしてみて再度makemigrationsしてみる
autherの情報を消去してもともとmigrate出来ていた状態に戻して再度makemigrations, migrateしてみる
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/01 06:04 編集
2020/08/01 06:15 編集
2020/08/01 06:16
2020/08/01 16:57
2020/08/01 19:34