通过SQLAlchemy documentation,我已经能够创建所需的父子关系。
class Node(db.Model):
__tablename__ = 'node'
id = db.Column(db.Integer, primary_key=True)
parent_data = db.Column(db.Integer, db.ForeignKey('node.data'))
data = db.Column(db.String(50))
children = db.relationship("Node", remote_side=[data])
然后创建对象,一切正常
node1 = Node(data='Node1')
node2 = Node(data='Node2', children=node1)
db.session.add(node2)
db.session.commit()
但是,如果我更改了node1中的数据(node2的子节点),则node2.parent_data不会相应地更新。 尝试为儿童使用backref,级联关系但没有成功。
我可以使用关联表在同一个类中创建多对多关系,但是很好地完成这项工作。