人気ブログランキング
人気ブログランキング
Python PR

TypeError: Field ‘id’ expected a number but got datetime.datetimeの解消法

記事内に商品プロモーションを含む場合があります

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='ユーザー'),
        ),
    ]
ABOUT ME
den
完全独学でWEBデザインを無謀にも挑戦している中年男。 工場勤務の会社員で3児の父。 チャレンジを忘れず、妻に怒られても心はおれず。 有益な情報を発信し、これを見ている人の為になればと思っています。
関連記事一覧