readonly field support
Not exactly answering the issue, but rather than use `bulk_create()` why not just use `insert_many()`? I tend to prefer creating the instances of my objects directly. It's easier for me to see which object I'm creating and see that I'm assigning values properly. I also find this method a bit easier to search and refactor.

`insert_many` gets close with dictionaries, but you're still one-step removed since the fields (dict keys) have no direct relation to the object within the code. the line where the dict is created might be several lines apart from the `insert_many` call using the model class. I dunno...specifying default values using database constraints is totally fine, but it doesn't play very well with an active-record ORM like Peewee. Unless you are using Postgres, which supports INSERT...RETURNING, you would need to issue a subsequent SELECT to obtain the values that are being stored in these columns. You might consider using the `insert_many()` APIs. So I've been kicking this around for a few days. The main APIs that would be impacted by such a change would be `save()`, `create()` and `bulk_create()`. My concern is that implementing something that causes certain columns to be excluded from these calls will also require a separate mechanism to override this exclusion. Since there already exist APIs for performing arbitrary insert/update queries, I think I'll pass on implementing this kind of functionality.
I created a `BaseTrackingModel` to capture some tracking data on insert/update.

```python
class BaseTrackingModel(BaseModel):
    created_at = DateTimeField(null=False, constraints=[SQL('DEFAULT CURRENT_TIMESTAMP')])
    updated_at = DateTimeField(null=True, constraints=[SQL('ON UPDATE CURRENT_TIMESTAMP')])
```

I quickly ran into an issue since I was not setting the `created_at` field, which I naively expected to be set by the database.

Some operations have an `only` param to define which fields to persist. The `insert_many` method uses a fields mapping which can accomplish the same behavior. 

However, the `bulk_create` method has no similar option - though I was successful in overriding the `bulk_create` class method to filter out these field names.

I feel like this is a core feature I would want built-in to the base Field, where I wouldn't need to worry about every point where data is persisted.

Do you have any thoughts or previous details on this type of functionality? Would you be able to point me in the right direction of where you could imagine the functionality living?