Dirty Flag
Nice, thanks for this.

Update all fields on saving will increase probability of `lost update`.
Such as: 

TransactionA do not update username field
TransactionB update username field
TransactionB save
TransactionA save. 

then we will lost username modification in TransactionB.
But if we just update necessary fields without username in TransactionA, it's okay.

we can easily call `model.save(only=model.dirty_fields)` to fix that.
