Allow arbitrary attributes on Fields
While I understand how, with your use-case, you would want this functionality -- at present I am not interested in making such a change to how fields work. I think subclassing is going to be the way to go. You can create a mixin class and then apply it to fields, e.g.:

```python
class FieldMixin(object):
    def __init__(self, *args, **kwargs):
        if 'serialize' in kwargs:
            # do something?
        super(FieldMixin, self).__init__(*args, **kwargs)

class MyCharField(FieldMixin, CharField): pass
```

Alternatively, you could handle this at the model level or at some other level...that's probably what I would end up doing -- put it at a higher level.
I am maintaining an own [extension of peewee](https://gitlab.com/HOMEINFO/peeweeplus) I use in several web applications.
For JSON-serializable models I currently use their "visibility" (Attrbiute prefixed with an underscore) state to determine whether to serialize and deserialize them or not.
I'd now like to have more control over serialization and deserialization of these fields.
Hence I'd like to add properties, set by respective keyword arguments like `deserialize`, `serialize` and `cascade` (in case of FK fields).

I obviously would need to subclass all types of fields in order to achieve that.
This is possible, but would require me to change the respective field classes in a lot of my code.

So my questions is this: May it be possible to allow arbitrary custom kwargs which will set appropriate properties on the fields?

I'm thinking of something like this:

```
class Field(ColumnBase):
    …

    def __init__(self, null=False, index=False, unique=False, column_name=None,
                 default=None, primary_key=False, constraints=None,
                 sequence=None, collation=None, unindexed=False, choices=None,
                 help_text=None, verbose_name=None, db_column=None,
                 _hidden=False, **kwargs):
        …
        for key, value in kwargs.items():
            if hasattr(self, key):
                raise DontCompromiseFieldFunctionality()
            setattr(self, key, value)
```

If you think, that something like this may be reasonable to add, I'd  be happy to write and submit the respective patch.