如何在Flask中获取特定父类别的子类别?

如何在Flask中获取特定父类别的子类别?,flask,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='categ

我无法在我的
导航菜单中获取子类别

我已经在它们之间建立了一对多的关系,下面是两个模型:

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中,我使用了一个jinja2
for loop
在我的
导航菜单中对它们进行排序,下面是代码:

{% 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 %}
{%for all_category%}
  • {%endfor%}
    我得到的只是类别名称和子类的计数

    请任何人告诉我我是否犯了任何错误以及在哪里???

    这应该可以:

    categories = db.session.query(Category, Sub).filter(Category.id == Sub.category_id).all()
    

    嗯,难道你不需要在jinja模板中的categories.subs上再循环一次吗?我试过了,没有val:(!我还需要添加其他关系吗?)??