Python 在单表继承SQLAlchemy模型中创建一对多关系
在下面的代码中,我使用SQLAlchemy创建了具有单个表继承的模型。 我正在尝试创建一个一对多关系,Python 在单表继承SQLAlchemy模型中创建一对多关系,python,python-3.x,database,sqlalchemy,Python,Python 3.x,Database,Sqlalchemy,在下面的代码中,我使用SQLAlchemy创建了具有单个表继承的模型。 我正在尝试创建一个一对多关系,目录可以包含许多由Bookmark.id链接的书签 我希望模型允许我执行以下操作: Directory.children或Bookmark.children(仅当书签是目录时)将为我提供它包含的书签。(无论是目录还是Url) Bookmark.parent,目录。parent或Url。parent将为我提供书签,目录或Url 这是我第一次使用单表继承,所以我可能犯了一个愚蠢的错误 目前我知道以下
目录
可以包含许多由Bookmark.id
链接的书签
我希望模型允许我执行以下操作:
Directory.children
或Bookmark.children
(仅当书签
是目录
时)将为我提供它包含的书签。(无论是目录
还是Url
)
Bookmark.parent
,目录。parent
或Url。parent
将为我提供书签
,目录
或Url
Directory.children
获取父目录的名称Directory.parent
获取子目录,但不包含任何URL类书签(基本):
__tablename_=“书签”
id=列(整数,主键=True)
标题=列(字符串(256))
date\u added=列(DateTime,nullable=False,default=DateTime.utcnow)
位置=列(整数)
parent_id=Column(整数,sqlalchemy.ForeignKey(“Bookmark.id”))
类型=列(字符串)
__mapper_args_uuuu={“多态性_on”:类型,“多态性_标识”:“书签”}
类Url(书签):
url=列(字符串(500))
图标=列(字符串)
icon_uri=列(字符串)
标记=列(字符串(500))
__mapper_args_uuu={“多态性_标识”:“url”}
类别目录(书签):
孩子=关系(
“书签”,
cascade=“保存更新、合并、删除”,
backref=“parent”,
懒惰=错误,
remote_side=“Bookmark.id”,
)
__映射器参数{“多态标识”:“目录”}
编辑:
所以我解决了我的大部分问题,我不知道这是否是最好的方法,但现在开始
children/parent
切换为parent/children
,如下所示parent=关系(
“书签”,
cascade=“保存更新、合并、删除”,
backref=“children”,
懒惰=错误,
remote_side=“Bookmark.id”,
)
目录
类更改为书签
类Url
类也有一个.children
属性。
有没有办法解决这个问题?我通过以下步骤解决了大部分问题:
children/parent
切换为parent/children
,如下所示parent=关系(
“书签”,
cascade=“保存更新、合并、删除”,
backref=“children”,
懒惰=错误,
remote_side=“Bookmark.id”,
)
目录
类更改为书签
类Url
类也有一个.children
属性。(这是我不想要的)
也许会有更好的解决方案,但现在我不得不这么做