Flask-SqlAlchemy를 사용하여 인접 목록 관계를 구현하는 작은 프로젝트에서 작업하고 있습니다. 같은 테이블의 parent_id
열을 참조하는 db.Relationship()
에 대한 특성을 가진 모델 (테이블)이 있습니다. Flask-SqlAlchemy 인접 목록 관계 backfref 예기치 않은 오류
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])
I는 다음과 같은 코드로 파이썬 셸에서 자녀에 대한 역 참조 속성을 사용하여 상위 폴더에 하위 폴더를 추가하려고
(부분 : 여기 은 (부분) 다음 코드) : 그러나parentNode = Node('title1')
db.session.add(parent)
db.session.commit()
childNode = Node('title2')
child.parent = parentNode
, 내가 시도 후 나는 다음하는 오류를 얻을 것을 파이썬 쉘 :
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: Incompatible collection type: Node is not list-like
솔루션을 찾기 위해 SqlAlchemy 문서를 읽었으며 인접 목록 관계에 대해 비슷한 구문을 사용합니다. 유사한 예제를 가지고 있지만 쉘에서 시도한 것처럼 자식 노드에 부모 노드를 추가하는 방법을 보여주지는 않습니다. 자식 노드의 backref 속성에 부모 노드를 추가하는 이유는이 노드가 일대 다 관계로 작동하기 때문입니다. 코드 문제를 찾는 데 큰 도움이 될 것입니다 ... 대체 솔루션을 제안 해 주시기 바랍니다.
감사합니다.
반, 스 니펫을 제공하고 문제를 지적 주셔서 감사합니다. 방금 방금 전에 보여준 방식으로 관계를 구성했습니다. 예상했던대로 정확히 작동합니다! 정말 고마워. 감사합니다. – shafayet