2011-11-04 13 views

答えて

89

デフォルトではこのようなことはありませんが、追加するのは簡単です。ただ、DateTimeFieldクラスでauto_now_addパラメータを使用します。

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がデフォルトで行うと何かのような音はありません。それはあなたにタイムスタンプを要求するよう強制しません。あなたはタイムスタンプ/フィールド名を忘れたくない場合は、私はそれを輸入に多くのように見えるしていません

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

    class Meta: 
     abstract = True 

を抽象基底クラスを構築し、そこからすべてのモデルを継承したい

代わりにdjango.db.models.Model

class MyFutureModels(TimeStampedModel): 
    .... 
+1

既に 'TimeStampedModel'を含んでいるDjango用の' model_utils'もありますが、このパッケージから何も必要ない場合は余分な重みを付けないでください。 – boldnik

+0

@boldnik私はsimplicityのファンです。 –

13

wherever.TimeStampedModelあなたがtheir TimeStampedModel oから継承して自由のためのこれらのモデルのフィールドを取得することができます(django-admin.pyコマンドラインヘルパーに機能を追加するための良いアプリです)django-extensionsを使用している場合R彼らのcustom TimeStamp fields

3

を使用すると、あなたは、タイムスタンプ抽象モデルに

from django_extensions.db.models import TimeStampedModel 

class A(TimeStampedModel): 
    ... 

を使用したい場合には、他の抽象モデルを持っているdjango-extensions

を試すことができます。あなたもそれを使用することができます。

関連する問題