2016-12-25 137 views
0

我無法在我的nav-menu中獲得子類別。它們之間如何在Flask中獲取特定父類別的子類別?

我創建關係一個一對多,這裏是兩個車型

class Category(db.Model): 
    id = db.Column(db.Integer(), primary_key=True) 
    name = db.Column(db.String()) 
    slug = db.Column(db.String(), unique=True) 
    subs = db.relationship('Sub', backref='categories', lazy='dynamic') 

    def __repr__(self): 
     return "Category: {}".format(self.name) 

class Sub(db.Model): 
    id = db.Column(db.Integer(), primary_key=True) 
    name = db.Column(db.String()) 
    slug = db.Column(db.String(), unique=True) 

    category_id = db.Column(db.Integer(), db.ForeignKey('category.id')) 
    author_id = db.Column(db.Integer, db.ForeignKey('author.id')) 

    def __repr__(self): 
     return "Sub: {}".format(self.name) 

我使用了一個基本的查詢抓住他們所有的視圖中,這裏是視圖

categories = Category.query.join(Sub, Sub.name == Category) 
if form.validate_on_submit(): 
    user = User.query.filter_by(username=form.username.data).one() 

    login_user(user) 

    identity_changed.send(
     current_app._get_current_object(), 
     identity=Identity(user.id) 
    ) 
    return redirect(request.args.get('next') or url_for('main.index')) 
return render_template('index.html', form=form, all_category=categories) 

index.html中我使用的的Jinja2for loop在我nav-menu他們進行排序,這裏是代碼:

{% for categories in all_category %} 
    <li> 
     <a href="javascript:void(0);">{{categories.name}} <span class="count pull-right">{{categories.subs.count()}}</span></a> 
     <ul class="sidebar-dropdown"> 
      <li> 
       <ul> 
        <li><a href="javascript:void(0);">{{categories.subs.name}}</a></li> 
       </ul> 
      </li> 
     </ul> 
    </li> 
{% endfor %} 

我所得到的僅僅是類別名稱潛艇的計數。

請問,任何人都可以告訴我,如果我犯了什麼錯誤,並在哪裏?

+0

嗯,也不需要在神社模板另一個環比categories.subs? –

+0

我試過了,沒有val :(! – reznov11

+0

有沒有其他的關係,我不得不添加? – reznov11

回答

0

這應該工作:

categories = db.session.query(Category, Sub).filter(Category.id == Sub.category_id).all() 
相關問題