【问题标题】:Display unique values on flask jinja template在烧瓶神社模板上显示唯一值
【发布时间】:2019-05-23 01:25:40
【问题描述】:

我对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,然后使用另一个查询来显示水果,但这对我来说没有意义,因为我仍然需要所有信息在整个查询中。顺便说一句,烧瓶中的初学者。

【问题讨论】:

    标签: python flask sqlalchemy jinja2


    【解决方案1】:

    您也许可以通过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 %}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-04-27
      • 2016-04-20
      • 1970-01-01
      • 1970-01-01
      • 2021-12-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多