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='ユーザー'),
),
]
