我想在每次修改记录时更新时间戳字段,就像在MySQL中一样。
DateTimeField(default=datetime.datetime.now())
只会在第一次创建时设置它......
有没有简单的解决方案? 唯一的解决方案是手动设置MySQL db中的Column选项吗?
答案 0 :(得分:30)
您可以覆盖模型类的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)
答案 1 :(得分:3)
在MySQL中使用TIMESTAMP类型。每当更新行时,此字段将自动更新。
在model
:
last_updated = peewee.TimestampField()
答案 2 :(得分:-1)
您也可以覆盖update
方法来提供。就像鞘翅目一样:
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
方法上做同样的事情