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。
我决定将一个 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。