Cannot have an object initialization on __init__()
No, I have no plans to add such login in 3.x. You could always make the logger a lazy-loaded property...hell that's probably a lot better anyways, right?

```
@property
def _logger(self):
    if not hasattr(self, '_logger_obj'):
        self._logger_obj = logging.getLogger(...)
    return self._logger_obj
```

It's Python, so you can be creative. Well, never thought about solving it this way. Smart sollution!

Maybe there're more people with a similar problem, would be interesting if this solution of lazy loading an instance object was in the documentation.
I want to criate a logger object to each one of my objects. In the 2.X versions overriding the `_prepare_instance()` to create the logger would work as in the `__init__()` method the object would not have the information yet.

Here's an example:

```python
class Alert(BaseModel):
    id = peewee.PrimaryKeyField()
    module = peewee.ForeignKeyField(BaseModule)
    status = peewee.CharField(index=True)
    level = peewee.IntegerField()
    acknowledged = peewee.BooleanField(default=False)
    created_at = DateTimeTZField(default=time_utils.now)
    solved_at = DateTimeTZField(null=True)

    class Meta:
        database = database

    def _prepare_instance(self, *args, **kwargs):
        super(Alert, self)._prepare_instance(*args, **kwargs)
        self._logger = logging.getLogger(f"({self.module.id}) Alert {self.id}")
```

If, instead of the `_prepare_instance()` method I used the `__init__()` method, the values of `self.module.id` and `self.id` would be None.

In the 3.X the `_prepare_instance()` doesn't exists anymore and looking at the source code, there's no replacement for it, these calls were just removed.

Now, if I want to create the logger object, I need to call a "setup" method manually for each object every time I create a new one or load one from the database.

Is there any plan to make it possible to "prepare the instance" automatically after it's loaded?