0
の関係を持つ子と祖先を再帰的にフェッチし、次のツリーを走査するのに少し役立ちました。 >親 - - >子供 - >サブ Sqlachemy、プロパティとハイブリッドトランスを使用して、
class Category(db.Model):
__tablename__ = 'category'
id = db.Column(db.Integer, primary_key=True)
parent = db.Column(db.Integer, db.ForeignKey('category.id'), nullable=True)
name = db.Column(db.String(400), index=True, unique=True)
children = db.relationship("Category", cascade='all, delete-orphan', backref=db.backref("child", remote_side=[id]))
parents = db.relationship("Category", cascade='all', backref=db.backref("back", remote_side=[id]))
entries = db.relationship("Feeds", backref='entry', lazy='dynamic')
class Feeds(db.Model):
__tablename__ = 'feeds'
id = db.Column(db.Integer, primary_key=True)
category_id = db.Column(db.Integer, db.ForeignKey('category.id'))
name = (db.String(400), index=True, unique=True)
@property
def parents(self):
allparents=[]
p = self.children
while p:
allparents.append(p)
p = p.children
return allparents
は、私は単純なオブジェクト私は子供が可変のツリーの深さ を持つ取得するためにすべてのツリーをトラバースするにはどうすればよい
catlist = db.session.query(Category).filter_by(id=1).all()
すなわち祖先を持っています-子?
私はどのようにサブ子オブジェクトを取得するのですか?
フィードモデルと同じですが、祖先ツリーをどのようにトラバースするのですか、どのように上位祖先ノードのみを取得しますか?
これは、私はあなたが再帰クエリを使用することができますPostgresqlのでエラー
catlist = db.session.query(Category).filter_by(id=1).all()
for cat in catlist:
cat[0].children
File "/home/afidegnum/PycharmProjects/store/core/model.py", line 45, in children
p = self.children
RuntimeError: maximum recursion depth exceeded
:
をクエリは次のようになりますか? –
@antonio_antuan Postgres – afidegnum