In Django-すべてのオブジェクトのデフォルトのタイムスタンプフィールドはありますか?つまり、モデルの 'created on'の 'timestamp'フィールドを明示的に宣言する必要がありますか?これを自動的に取得するには?
デフォルトではそのようなことはありませんが、追加するのは非常に簡単です。 DateTimeField
クラスでauto_now_add
パラメーターを使用するだけです:
created = models.DateTimeField(auto_now_add=True)
「更新日」フィールドにauto_now
を使用することもできます。 auto_now
here の動作を確認します。
auto_now_add
here の場合。
両方のフィールドを持つモデルは次のようになります。
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
インポートすることはあまりないようですwherever.TimeStampedModel
の代わりに Django.db.models.Model
class MyFutureModels(TimeStampedModel):
....
Django-extensions (Django-admin.pyコマンドラインヘルパーに機能を追加するのに適したアプリです)を使用している場合、 their TimeStampedModel または カスタムTimeStampフィールド を使用
Django-extensions を試すことができます
タイムスタンプ抽象モデルを使用する場合
from Django_extensions.db.models import TimeStampedModel
class A(TimeStampedModel):
...
他の抽象モデルがあります。それも使用できます。
このフィールドを変更できるようにするには、auto_now_add=True:
の代わりに次を設定します
日付について
from datetime import date
models.DateField(default=date.today)
DateTimeの場合
from Django.utils import timezone
models.DateTimeField(default=timezone.now)
私は一緒に行くと思う
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