Request: make table_function to be evaluated during first time Model being instantiated.
Yes, we evaluate it at class-creation time. I'm going to pass on the solutions proposed, as they seem rather specific to whatever you're doing.
Rationale
---------
Currently, `table_function` is evaluated as soon as a `Model` class is defined.

However, just like`peewee.DatabaseProxy()`, sometimes table prefix is also not known until the config file is parsed.

Current Workaround
--------------------
I carefully checked imports to make sure no database models are loaded until config file is parsed. But it is kind of difficult to keep track of files as the code base grows. And this separates the program into two separate parts `config` and `main[web handlers, database_models]` which is less than ideal.

Potential Solutions
-------------------
1. make `table_function` to be evaluated during first time `Model` being instantiated.

2. let `Database` carry a `prefix` attribute and peewee read it every time it tries to generate a SQL statement.

