他のすべてのスキーマオブジェクトが継承できる基本クラスを宣言したいと思います。次に例を示します。
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())
そうすれば、他のすべてのスキーマオブジェクトはそれを継承でき、2つの列の宣言を繰り返す必要がなくなります。
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)
SQLAlchemyは __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)