我希望每次修改记录时都会更新时间戳字段,就像在 MySQL 中一样。
DateTimeField(default=datetime.datetime.now())
只会在第一次创建时设置它...
任何有一个简单的解决方案?唯一的解决方案是在 MySQL db 中手动设置 Column 选项吗?
您可以覆盖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
你也可以在方法上做同样的事情