Peewee : How to update specific fields?

Viewed 5346

I'm using Peewee for working with database. I have a User tables with 3 fields: username, password and last_login. When a user login to the system i want to update last_login. I've use following lines of code:

from peewee import *
import datetime

class User(Model):
    username = CharField(unique=True)
    password = CharField()
    last_login = DateTimeField(default=datetime.datetime.now())

    class Meta:
        database = MySQLDatabase('mydb', user='root', charset='123456')


u=User(username="user1", last_login=datetime.datetime.now())
u.save()

Although i haven't specified any value for password, it is overwritten after u.save() is called. How should i force peewee to only update last_login field?

4 Answers

If you want to save only modified fields, you may use the method below:

class User(Model):
    username = CharField(unique=True)
    password = CharField()
    last_login = DateTimeField(default=datetime.datetime.now())

    class Meta:
        database = MySQLDatabase('mydb', user='root', charset='123456')

        # This method saves only modefied fields
        only_save_dirty = True

u=User(username="user1", last_login=datetime.datetime.now())
u.save()
Related