Dirty field not set in RelationDescriptor __set__ override
Another related question is just, why not default to always only saving dirty fields. Just wondering if I am missing something where that would be unsafe? That does seem to be the behavior when you have a CompositeKey? https://github.com/coleifer/peewee/blob/2.2.5/peewee.py#L3159
 > Another related question is just, why not default to always only saving dirty fields.

It's easier to understand.
 I can just actually lead to some unclear behavior. What happened to me is that I have an incrementing field on an object, num_members. I never modify this in code, only in a trigger, but save was overwriting num_members with an older value. The advantage of only saving modified fields is that you can be sure there are no unintended overwrites like this.

Setting foreign key values doesn't mark those fields dirty.

https://github.com/coleifer/peewee/blob/2.2.5/peewee.py#L885

I am also wondering if Model.prepared should clear dirty fields. As is, just fetching objects from the DB ends up marking all the fields dirty.

https://github.com/coleifer/peewee/blob/2.2.5/peewee.py#L3140

Both of these issues make it hard to call save with `only=self.dirty_fields`
