如何在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中,我使用了一个jinja2for 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:(!我还需要添加其他关系吗?)??