Получить наследующее имя класса в методе базового класса - PullRequest
0 голосов
/ 18 октября 2018

У меня есть модели в моем приложении Flask.Я создаю таблицы из этих моделей и вставляю данные в эти таблицы.Однако, когда я вставляю в эти таблицы, я хочу записать, что я вставляю и в какую таблицу я вставляю.У меня есть метод создания класса в моей BaseModel, от которого наследуются все другие модели.Я хочу записать имя класса унаследованной модели в этом методе «создания».Когда я делаю это, используя

cls.__class__.__name__

, это дает мне значение «DefaultMeta».Я хочу, чтобы он дал мне имя модели, например, User.

Вот мой метод создания в BaseModel:

class BaseModel(db.Model):
    __abstract__ = True
    __table_args__ = {"extend_existing": True}

    id = db.Column(
        db.Integer,
        primary_key=True
        )
    create_date = db.Column(
        db.DateTime,
        default=datetime.utcnow()
        )
    update_date = db.Column(
        db.DateTime,
        default=datetime.utcnow(),
        onupdate=db.func.now()
        )

    @classmethod
    def create(cls, **kwargs):
        current_app.logger.info('Creating {} with args: {}'.format(cls.__class__.__name__, kwargs))
        obj = cls(**kwargs)
        db.session.add(obj)
        db.session.commit()
        return obj

Как мне этого добиться?Возможно ли это?

1 Ответ

0 голосов
/ 18 октября 2018

cls.__class__.__name__ - имя класса класса.Вы хотите имя класса.Это cls.__name__.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...