首页 > 解决方案 > 为抽象模型在自身上创建关系

问题描述

我有一个抽象模型:

@as_declarative
class Base(Model):
    __abstract__ = True
    @declared_attr
    def __tablename__(cls):
        return cls.__name__.lower() + 's'

    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String, nullable=False)

其他几个模型将从这个模型继承,它们中的每一个都必须与自身有关系。

在抽象模型中注册这个关系很方便,以免在每个子模型中都写。

但是我在文档或讨论中都没有找到如何正确实现它。

我认为,可以使用这种方法:

...
@declared_attr
def parent_id(cls):
    return Column('parent_id', ForeignKey(cls.__tablename__ + '.id'))

但我不确定这个决定的正确性。

标签: pythonsqlalchemy

解决方案


推荐阅读