I would like a timestamp field updating each time the record is modified like in MySQL.
DateTimeField(default=datetime.datetime.now())
will only set it
Just use TIMESTAMP type in MySQL. This field will update itself whenever the row is updated.
In the model
:
last_updated = peewee.TimestampField()
You can override the save
method on your model class.
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)
You can also override the update
method to provide.Just like what coleifer do:
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)
You can also do the same thing on replace
method