MySQL のように、レコードが変更されるたびにタイムスタンプ フィールドを更新したいと考えています。
DateTimeField(default=datetime.datetime.now())
最初に作成されたときにのみ設定されます...
簡単な解決策はありますか?唯一の解決策は、MySQL db で列オプションを手動で設定することですか?
save
モデル クラスのメソッドをオーバーライドできます。
class Something(Model):
created = DateTimeField(default=datetime.datetime.now)
modified = DateTimeField
def save(self, *args, **kwargs):
self.modified = datetime.datetime.now()
return super(Something, self).save(*args, **kwargs)
MySQL で TIMESTAMP 型を使用するだけです。このフィールドは、行が更新されるたびに更新されます。
でmodel
:
last_updated = peewee.TimestampField()
また、提供するメソッドをオーバーライドすることもできますupdate
。coleifer と同じように:
class Something(Model):
created = DateTimeField(default=datetime.datetime.now)
modified = DateTimeField
@classmethod
def update(cls, *args, **kwargs):
kwargs['modified'] = datetime.datetime.now()
return super(Something, cls).save(*args, **kwargs)
def save(self, *args, **kwargs):
self.modified = datetime.datetime.now()
return super(Something, self).save(*args, **kwargs)
replace
メソッドでも同じことができます