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

标签 python sqlalchemy

我的 Flask 应用程序中有模型。我从这些模型创建表,并将数据插入到这些表中。但是,当我插入这些表时,我想记录我正在插入的内容以及我正在插入的表。我的 BaseModel 中有一个“创建”类方法,所有其他模型都继承自该方法。我想在这个“create”方法中记录继承模型的类名。当我这样做时使用

cls.__class__.__name__

它给了我值“DefaultMeta”。我希望它给我模型名称,例如用户。

这是我在 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

我怎样才能实现这个目标?可能吗?

最佳答案

cls.__class__.__name__ 是类的类名。您想要类(class)的名称。那是cls.__name__

关于python - 在基类的类方法中获取继承类名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52865025/

相关文章:

python - 将位于 Google 云端硬盘中的图像数据集(文件夹或 zip)加载到 Google Colab?

python - 有条件填充数据框 pandas

python - 在 alembic 中配置 env.py 文件时使用 .env 变量

python - SQLAlchemy 混合属性无法正常工作

python - sqlalchemy 反射(reflect)表到 orm?

javascript - Flask WTForms 的自定义属性

python - 如何从 Pandas 的列表中提取值

java - 使用 Gradle 构建 Python 应用程序

python - 如何返回多个模型/表 flask-sqlalchemy?

python - 使用 sqlalchemy 从相关表中只选择一行