我希望每次修改记录时都要更新时间戳字段,就像在MySQL中一样。
DateTimeField(default=datetime.datetime.now())只会在第一次创建时设置它.
有简单的解决办法吗?唯一的解决方案是手动设置MySQL db中的列选项吗?
发布于 2013-08-30 12:53:44
您可以重写模型类上的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)发布于 2017-08-11 17:38:07
只需在MySQL中使用时间戳类型即可。每当行被更新时,此字段将自我更新。
在model中
last_updated = peewee.TimestampField()发布于 2018-12-26 07:49:03
您还可以像coleifer一样将update方法重写为provide.Just:
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方法上做同样的事情。
https://stackoverflow.com/questions/18522600
复制相似问题