Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在django中,模型是否有默认的时间戳字段?_Django_Django Models_Django Views - Fatal编程技术网

在django中,模型是否有默认的时间戳字段?

在django中,模型是否有默认的时间戳字段?,django,django-models,django-views,Django,Django Models,Django Views,在django中,是否有所有对象的默认时间戳字段?也就是说,我必须在我的模型中为“created on”显式声明一个“timestamp”字段吗?或者有没有一种方法可以自动获得这个字段?默认情况下没有这样的事情,但是添加一个字段非常简单。只需使用DateTimeField类中的auto\u now\u add参数: created = models.DateTimeField(auto_now_add=True) 您还可以对“更新日期”字段使用auto\u now。 检查auto\u now的

在django中,是否有所有对象的默认时间戳字段?也就是说,我必须在我的模型中为“created on”显式声明一个“timestamp”字段吗?或者有没有一种方法可以自动获得这个字段?

默认情况下没有这样的事情,但是添加一个字段非常简单。只需使用
DateTimeField
类中的
auto\u now\u add
参数:

created = models.DateTimeField(auto_now_add=True)
您还可以对“更新日期”字段使用
auto\u now
。 检查
auto\u now
的行为

对于
auto\u now\u add

包含两个字段的模型将如下所示:

class MyModel(models.Model):
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

自动运行听起来不像django默认会做的事情。它不会强迫你需要一个时间戳

如果您不想忘记时间戳/字段名等,我将构建一个抽象基类并从中继承所有模型

class TimeStampedModel(models.Model):
     created_on = models.DateTimeField(auto_now_add=True)

     class Meta:
         abstract = True
导入
where.timestamedModel
而不是
django.db.models.Model

class MyFutureModels(TimeStampedModel):
    ....
如果您正在使用(这是一个很好的向django-admin.py命令行助手添加功能的应用程序),您可以通过继承或使用它们的

免费获取这些模型字段,您可以尝试

如果要使用时间戳抽象模型

from django_extensions.db.models import TimeStampedModel

class A(TimeStampedModel):
   ...

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

我想我会同意的

created = models.DateTimeField(auto_now_add=True)
updated = models.DateTimeField(auto_now=True)
我需要一些关于使用的澄清

class TimeStampedModel(models.Model):
    created_on = models.DateTimeField(auto_now_add=True)

    class Meta:
         abstract = True

如果您希望能够修改此字段,请设置以下内容,而不是
auto\u now\u add=True:

约会

from datetime import date

models.DateField(default=date.today)
日期时间

from django.utils import timezone

models.DateTimeField(default=timezone.now)

Django还有
model_utils
,其中已经包含
timestamesedmodel
,但如果您不需要此软件包中的任何其他内容,只需将其保持在无额外重量的状态即可。@boldnik我非常喜欢简单。非常酷。。。我有3个类需要为
创建的
更新的
设置时间戳。这是一个干净的好方法。我真的很喜欢这个解决方案