Принадлежность к мета-классу Peewee

#orm #peewee #flask-peewee

#orm #peewee #flask-peewee

Вопрос:

Я борюсь со следующим:

 from my_db_definition import db
from peewee import *
class A(Model):
    class Meta:
        database=db
        table_name = 'random'
        
class B(A):
    pass
 

при запуске

 print(A._meta.table_name)
print(B._meta.table_name)
random
b
 

Теперь у меня вопрос: почему в этом случае изменяется имя таблицы и можно ли это предотвратить? Я совершенно сбит с толку

Ответ №1:

http://docs.peewee-orm.com/en/latest/peewee/models.html#model-options-and-table-metadata

В документах перечислены, какие параметры наследуются, а какие нет.

Только определенные атрибуты передаются подклассу через внутренний «Мета» класс. Его целью является 1) пространство имен и 2) предоставление соглашений вокруг СУХОГО кода.

имя таблицы не наследуется, потому что, по-видимому, вам нужен только один класс для каждой таблицы, тогда как база данных наследуется, потому что имеет смысл объявить это только один раз.