我正在做一个小项目,我正在使用 Flask-SqlAlchemy 来实现邻接列表关系。我有一个模型(表),它有一个db.Relationship()
引用parent_id
同一个表的列的属性。
这是以下代码(部分):
class Node(db.Model):
id = db.Column(db.Integer, primary_key = True)
title = db.Column(db.String(80))
folder_id = db.Column(db.Integer, db.ForeignKey('node.id'))
children = db.relationship('Node', backref = 'parent', remote_side=[id])
当我尝试使用 Python Shell 中子级的 backref 属性将子文件夹添加到父文件夹时,例如以下代码(部分):
parentNode = Node('title1')
db.session.add(parent)
db.session.commit()
childNode = Node('title2')
child.parent = parentNode
但是,在 Python shell 中尝试后出现以下错误:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: Incompatible collection type: Node is not list-like
我已阅读 SqlAlchemy 文档以找出解决方案,并且它们对邻接列表关系具有相似的语法。它有一个类似的示例,但没有显示如何将父节点添加到子节点,就像我在 shell 中尝试的那样。将父节点添加到子节点的 backref 属性中的原因是它适用于一对多关系。非常感谢您找到代码问题的任何帮助......请随时提出替代解决方案。
谢谢!