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

时间:2016-12-25 13:14:03

标签: flask

我无法在nav-menu中获得子类别。

我创建了他们之间的关系一对多,这是两个模型

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对我的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 %}

我得到的只是类别名称以及潜在客户的数量。

拜托,任何人都可以告诉我,如果我犯了什么错误,在哪里???

1 个答案:

答案 0 :(得分:0)

这应该有效:

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