我想声明一个所有其他模式对象的基类 可以继承,例如:
class Base(db.Model):
created_on = db.Column(db.DateTime, default=db.func.now())
updated_on = db.Column(db.DateTime, default=db.func.now(), onupdate=db.func.now())
然后所有其他模式对象都可以从中继承而不必重复 两栏的声明。
我如何在Flask-SQLAlchemy中执行此操作?
from flask.ext.sqlalchemy import SQLAlchemy
db = SQLAlchemy(app)
class User(db.Model):
__tablename__ = 'users'
id = db.Column(db.Integer, primary_key = True)
email = db.Column(db.String(255), unique = True)
答案 0 :(得分:53)
SQLAlchemy提供directive called __abstract__
。您可以使用它来告诉SQLAlchemy不要为特定模型创建表。该模型可以用作您的基类。
from flask.ext.sqlalchemy import SQLAlchemy
db = SQLAlchemy(app)
class Base(db.Model):
__abstract__ = True
created_on = db.Column(db.DateTime, default=db.func.now())
updated_on = db.Column(db.DateTime, default=db.func.now(), onupdate=db.func.now())
class User(Base):
__tablename__ = 'users'
id = db.Column(db.Integer, primary_key = True)
email = db.Column(db.String(255), unique = True)