Django 在填充的 table 上创建 DateTimeField(auto_now_add)

Django creating a DateTimeField(auto_now_add) on a populated table

我决定将一个 created = Models.DateTimeField(auto_now_add = True) 字段添加到已经实例化对象的模型中(当然没有 created 字段),并将它们保存为 initial_data

所以现在当我 运行 syncdb 时,我收到错误 app_model.created may not be NULL 因为它试图加载没有该字段的对象。

那么我该如何解决这个问题呢?我希望它在我调用 syncdb 时自动分配时间为 object.created。我可以做到吗?

感谢您的帮助!

将新字段添加到模型后,您需要创建和 运行 迁移,运行ning:

>>> python manage.py makemigrations
>>> python manage.py migrate

在这种情况下,当它尝试创建新的非空字段时,它会询问您是否要在模型中添加创建默认值或是否要立即定义一个值,您可以选择在控制台中添加一个值。当提示求值时,可以使用datetime模块,这样就可以写成值:

datetime.datetime.now()

我会使用默认值而不是 auto_now_add。

from django.utils.timezone import now

class Something(models.Model):
    created = models.DateTimeField(default=now, editable=False)

它还能让您的数据字段识别时区并使用 UTC。