update a model field mysql can't auto update the `ON UPDATE` field?
Peewee is an active-record ORM...so when you call ".save()" it will, by default, explicitly set the values for all columns using whatever values are stored in the model instance at that time.

Additionally, the `default=...` values only apply when the model does not already have a value for the given fields. So "datetime.datetime.now()" will be called the first time the model is created, but subsequently (assuming the field values are not None) the initial values will not be overwritten.

You're probably best doing something like this:

```python
class Caller(Model):
    def save(self, *args, **kwargs):
        self.updated_at = datetime.datetime.now()
        return super(Caller, self).save(*args, **kwargs)
```

That's the more commonly-used pattern with active-record ORMs like Peewee. Alternatively, explicitly issuing an `UPDATE` query (by calling `Caller.update()`) would probably have the effect you're looking for.

```python
obj = Caller.select()...first()
update = {}
if admin is not None:
    update[Caller.admin] = admin
if key is not None:
    update[Caller.key] = key
# etc.
if update:
    Caller.update(update).where(Caller.id == id).execute()
``` Thank you very much!
I created a table use `mysql < test.sql`, test.sql content is:

```sql
CREATE TABLE IF NOT EXISTS `caller` (
     `id` INT NOT NULL AUTO_INCREMENT COMMENT 'caller id',
     `key` VARCHAR(36) NOT NULL DEFAULT '' COMMENT 'caller key',
     `admin` VARCHAR(255) NOT NULL DEFAULT '' COMMENT 'admin list',
     `is_deleted` TINYINT NOT NULL DEFAULT 0 COMMENT 'is deleted',
     `created_at` DATETIME NOT NULL DEFAULT NOW() COMMENT 'created time',
     `updated_at` DATETIME NOT NULL DEFAULT NOW() ON UPDATE NOW() COMMENT 'updated time',
     PRIMARY KEY (`id`),
     UNIQUE KEY `uk_key` (`key`)
)
ENGINE=InnoDB DEFAULT CHARSET=utf8
COMMENT = 'caller table';
```

then I defined a model

```python
class Caller(MySQLBaseModel):
    id = peewee.IntegerField(primary_key=True, sequence=True)
    key = peewee.CharField(default='')
    admin = peewee.CharField(default='')
    is_deleted = peewee.BooleanField(default=False)
    created_at = peewee.DateTimeField(default=datetime.datetime.now)
    updated_at = peewee.DateTimeField(default=datetime.datetime.now)

      class Meta:
         db_table = 'caller'
```

when I  update the model, the updated_at field's `ON UPDATE` dose not work? the time is still when I created it.

```python
def update_record(id, admin=None, key=None, is_deleted=None):
    data = Caller.select().where(Caller.id == id).first()
    if not data:
        return
    if admin is not None:
        data.admin = admin
    if key is not None:
        data.key = key
     if is_deleted is not None:
        data.is_deleted = is_deleted
     # data.updated_at = datetime.datetime.now()
     data.save()

      return data
```