具有auto_now_add的Django DateTimeField要求默认

时间:2019-05-26 03:02:33

标签: django

我的模型created_at = models.DateTimeField( auto_now_add = True )中有此字段

当我尝试进行迁移时,出现错误:

You are trying to add the field 'created_at' with 'auto_now_add=True' to user wi
thout a default; the database needs something to populate existing rows.

 1) Provide a one-off default now (will be set on all existing rows)
 2) Quit, and let me add a default in models.py

我尝试设置默认值,但是它说defaultauto_now_add是互斥的。当然,我可以只使用没有auto_now_add的默认值,但我想知道为什么会弹出此错误。我错过了什么吗?

2 个答案:

答案 0 :(得分:1)

您已经有一些没有created_at值的行。 但是,当您添加以下字段并运行迁移

created_at = models.DateTimeField( auto_now_add = True)

它期望现有行具有created_at值。因此,它会在迁移时警告您。

解决此问题。 您可以选择第一个选项Provide a one-off default now (will be set on all existing rows)。 通过选择第一个选项,您正在寻求价值。在这里您可以输入timezone.now()。它将使用当前时间戳填充现有行。

答案 1 :(得分:1)

删除app中的migration文件,可以在没有报错的时候进行migrtion进程,是之前创建的时间对象的原因导致的。