Это похоже на грязный хак, и я не совсем уверен, работает ли он так, как ожидалось, но это может дать некоторое вдохновение;)
Идея состоит в том, чтобы создать класс PageRevision динамически, копируя поляPage.
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()
class Page(db.Model):
__tablename__ = 'pages'
page_id = db.Column(db.Integer, primary_key=True)
content = db.Column(db.Text(), default='', nullable=False)
def columns_of_table(table_type):
for col in Page.__table__.columns:
yield col.key, db.Column(col.type, default=col.default, nullable=col.nullable, primary_key=False)
PageRevision = type('PageRevision', (db.Model, ), {
'rev_id': db.Column(db.Integer, primary_key=True),
'rev_parent_id': db.Column(db.Integer, nullable=True),
**{key: col for key, col in columns_of_table(Page)}
})