在基类的类方法中获取继承的类名称

时间:2018-10-17 23:40:05

标签: python sqlalchemy

我的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 :(得分:2)

cls.__class__.__name__是班级的班级名称。您需要班级的名称。那是cls.__name__