2016-03-16 1 views
2

Je ne comprends pas comment obtenir le SQLAlchemy-MPTT arbre objet complet:SQLAlchemy-MPTT obtenir arbre plein

from sqlalchemy_mptt import BaseNestedSets 

class Category(db.Model, BaseNestedSets): 
    id = db.Column(db.Integer, primary_key=True) 
    name = db.Column('Text', db.String(120)) 

    def __repr__(self): 
     return "<Category (id={0}, name={1}, parent={2})>".format(self.id, self.name, 
                    self.parent_id) 

Je peux faire une demande:

roots = Category.query.filter_by(parent_id=None) 

Et:

full_tree = None 
for root in roots: 
    full_tree += root.drilldown_tree() 

Mais je pense qu'il y a des solutions plus faciles?

Répondre

2
@app.route('/test') 
def test(): 
    title = "Page for tree test" 
    roots = Category.query.filter_by(parent_id=None) 
    full_tree = [] 
    for root in roots: 
     full_tree.append(root.drilldown_tree()[0]) 
    return render_template('test.html', title=title, category=full_tree) 

et modèle:

{%- for item in category recursive %} 
    <p>{{ '+--' * (loop.depth-1) }}{{item.node.name}}</p> 
    {%- if item.children -%} 
     {{ loop(item.children) }} 
    {%- endif %} 
{%- endfor %}