Any way to change table naming logic?
Yes, specify `legacy_table_names = False` in your base model Meta:

```python
from peewee import *

def table_name(cls):
    return cls.__name__

class Base(Model):
    class Meta:
        legacy_table_names = False

class RealModelWithLongName(Base):
    pass

print(RealModelWithLongName._meta.table_name)
```

Prints "real_model_with_long_name".

peewee also supports a `Meta.table_function` option to provide your own implementation. For your example:

```python
from peewee import *

def table_name(cls):
    return cls.__name__

class Base(Model):
    class Meta:
        table_function = table_name

class RealModelWithLongName(Base):
    pass

print(RealModelWithLongName._meta.table_name)
```

Prints "RealModelWithLongName". Documented here: http://docs.peewee-orm.com/en/latest/peewee/models.html#table-names
By default, if I call my Model class using python conventional CamelCase with multiple words in its name (like `class ManyWordsNamedTable(peewee.Model)`) Peewee will just lowercase it, so I'll get table "manywordsnamedtable" created in my DB which is hardly readable. I know there's an option to use Meta.table_name parameter, but it applies individually so I should define names for every table by my hands. Is there any option to name all the tables in snake_case just changing base model Meta class and then inherit every table from this BaseModel?

I want it to be something like this:

```python
import peewee

class BaseModel(peewee.Model):
    class Meta:
        database = peewee.PostgresqlDatabase(...)
        table_nameing_type = peewee.SNAKE_CASE_NAMING

class RealModelWithLongName(BaseModel)
    some_field = peewee.IntegerField()

RealModelWithLongName.create_table()
```
And it would create table named real_model_with_long_name