在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): ... 

它有其他的抽象模型。 你也可以使用它。