我无法在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 %}
我得到的只是类别名称以及潜在客户的数量。
拜托,任何人都可以告诉我,如果我犯了什么错误,在哪里???
答案 0 :(得分:0)
这应该有效:
categories = db.session.query(Category, Sub).filter(Category.id == Sub.category_id).all()