Djangoのマイグレーションを行ったときに出たエラーで
TypeError: Field ‘id’ expected a number but got datetime.datetime(20**,*, **, *, *, **, ******, tzinfo=datetime.timezone.utc).というエラーが発生したのでその解消法について
どうやらmodels.pyのForeignKeyの部分の初期値がおかしいようなのでdefault = 1;を追加してみました。
変更前
user = models.ForeignKey( CustomUser, verbose_name='ユーザー', on_delete=models.PROTECT, )
変更後
user = models.ForeignKey( CustomUser, verbose_name='ユーザー', on_delete=models.PROTECT, default=1,#←追加 )
これでもう大丈夫だろうとmakemigrationしてマイグレーションしたのですが、まだ解消されず。 しょうがないので、miglationsのフォルダーにある0001_***のファイルの中身を直接編集することにしました。
変更前
operations = [ migrations.AddField( model_name='jobmodel', name='user', field=models.ForeignKey( default=django.utils.timezone.now, on_delete=django.db.models.deletion.PROTECT, to=settings.AUTH_USER_MODEL, verbose_name='ユーザー'), preserve_default=False, ), migrations.AddField( model_name='review', name='user', field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, to=settings.AUTH_USER_MODEL, verbose_name='ユーザー'), ), ]
default=django.utils.timezone.now,の部分が問題なようで、
default=1,とするとエラーは解消されました。
変更後
operations = [ migrations.AddField( model_name='jobmodel', name='user', field=models.ForeignKey( default=1, on_delete=django.db.models.deletion.PROTECT, to=settings.AUTH_USER_MODEL, verbose_name='ユーザー'), preserve_default=False, ), migrations.AddField( model_name='review', name='user', field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, to=settings.AUTH_USER_MODEL, verbose_name='ユーザー'), ), ]