在Django的模型有一个默认的时间戳字段?
在Django中 – 是否有所有对象的默认时间戳字段? 也就是说,我是否必须明确地声明在我的模型中创build的“时间戳”字段 – 还是有办法自动获取?
没有这样的默认设置,但添加一个超级简单。 只需使用DateTimeField
类中的auto_now_add
参数:
created = models.DateTimeField(auto_now_add=True)
您也可以使用auto_now
作为“更新date”字段。 检查他们在文档中的行为。
两个字段的模型将如下所示:
class MyModel(models.Model): created_at = models.DateTimeField(auto_now_add=True) updated_at = models.DateTimeField(auto_now=True)
自动听起来不像django默认的那样。 它不会强制你需要时间戳。
如果你不想忘记时间戳/字段名等,我会构build一个抽象基类并inheritance它的所有模型。
class TimeStampedModel(models.Model): created_on = models.DateTimeField(auto_now_add=True) class Meta: abstract = True
它似乎没有太多导入wherever.TimeStampedModel
而不是django.db.models.Model
class MyFutureModels(TimeStampedModel): ....
如果您使用的是django-extensions (这是向django-admin.py命令行帮助程序添加function的一个很好的应用程序),您可以通过inheritance它们的TimeStampedModel或使用它们的自定义TimeStamp字段来免费获取这些模型字段
你可以试试django-extensions
如果你想使用时间戳抽象模型
from django_extensions.db.models import TimeStampedModel class A(TimeStampedModel): ...
它有其他的抽象模型。 你也可以使用它。