我对自己的views.py有疑问:
query = db.session.query(Basket, Fruits).filter(Fruits.basket_id == Basket.id)
在html模板中,我希望显示每个购物篮ID(此处的购物篮ID是唯一的),每个购物篮内的水果是什么,因此我在模板中使用了嵌套的for循环。
我已经尝试过html模板:
{% for basket in query | unique %}
<p>{{ basket.Basket.id }}</p>
{% for fruits in query %}
<p>{% if basket.Basket.id == fruits.Basket.id %}
<p>{{ query.Fruits.fruit }}</p>
{% endif %}
{% endfor %}
但是不会显示唯一的购物篮ID。
我曾考虑过创建2个查询,以便可以放置.distinct并显示唯一的购物篮ID,然后使用另一个查询显示水果,但这对我来说没有意义,因为我仍然需要所有信息在整个查询中。摇瓶初学者。
答案 0 :(得分:0)
您也许可以通过one to many relationship来实现。
class Basket(db.Model):
id = db.Column(db.Integer, primary_key = True)
name = db.Column(db.String(100))
fruits = db.relationship('Fruit', backref='basket')
class Fruit(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(100))
basket_id = db.Column(db.Integer, db.ForeignKey('basket.id'))
@app.route('/')
def baskets():
baskets = db.session.query(Basket).all()
return render_template('baskets.html', baskets=baskets )
Jinja2模板:
{% for b in baskets %}
<ul>
<p>
{% b.name %}
</p>
{% for f in b.fruits %}
<li>{{ f.name }}</li>
{% endfor %}
</ul>
{% endfor %}