我正在使用flask-sqlalchemy。 我目前使用以下方式声明我的模型:
class MyModel(db.Model):
__tablename__ = 'my_table'
id = db.Column(db.Integer, primary_key=True)
...
我想创建一个基础模型类,所以我可以像这样声明我的模型:
class MyBase(db.Model):
pass
class MyModel(MyBase):
__tablename__ = 'my_table'
id = db.Column(db.Integer, primary_key=True)
...
有可能吗? 我收到以下错误:
InvalidRequestError: Class <class 'api.models.base.base_model.BaseModel'> does not have a __table__ or __tablename__ specified and does not inherit from an existing table-mapped class.
我希望能够将tablename和所有列属性放在我的模型中,而不是放在我的基类中。
答案 0 :(得分:3)
由于您的自定义基本模型不是真实模型,因此您需要通过在类上设置__abstract__ = True
来告诉SQLAlchemy它是抽象的。
class MyBase(db.Model):
__abstract__ = True
除非您要为此自定义基础添加常用功能,否则执行此操作毫无意义。空的自定义基本基本等同于直接从db.Model
继承。