我的 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/