2011-11-04 75 views

回答

89

默认情况下没有这样的事情,但添加一个超级简单。只需使用auto_now_add参数在DateTimeField类:

created = models.DateTimeField(auto_now_add=True) 

您还可以使用auto_now一个“更新”字段。检查他们的行为in the doc

与这两个领域的模型看起来就像这样:

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

自动地听起来并不喜欢的事的Django默认会做。它不会强制你需要时间戳。

我想建立一个抽象基类和继承其所有车型,如果你不希望有关timestamp /字段名给忘了,等

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): 
    .... 
+1

Django中还有'model_utils',它已经包含'TimeStampedModel',但是如果你不需要这个包里的其他东西,只需保持它没有额外的重量。 – boldnik

+0

@boldnik我是一个简单的粉丝。 –

3

您可以尝试django-extensions

,如果你想使用时间戳抽象模型

from django_extensions.db.models import TimeStampedModel 

class A(TimeStampedModel): 
    ... 

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

相关问题