我想查询按order_id筛选的DB,并可以访问category_name的信息。
我试着通读了几个这样的答案,但我不能完全达到我想达到的目的。我有一个模型,比如:
型号.py
product_category_table = db.Table('prouct_to_category_association',
db.Column('product_id', db.Integer, db.ForeignKey('product.id')),
db.Column('category_id', db.Integer, db.ForeignKey('category.id')))
class Category(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(120), index=True)
risks = db.relationship("Product",
secondary=product_category_table,
back_populates="categories")
class Product(db.Model):
id = db.Column(db.Integer, primary_key=True)
order_id = db.Column(db.Integer, db.ForeignKey('Order.id'))
product_value = db.Column(db.Float(1,2), index=True)
categories = db.relationship("Category",
secondary=risk_category_table,
back_populates="risks")
我现有的查询看起来像:
products = Product.query.filter_by(order_id = 1).all()
当我想访问我正在使用的信息时(以Jinja2格式(:
{% for product in products %}
cat = {{product.categories}}, val={{product.product_value}}
{% endfor %}
这允许我打印:
cat = [1], val = 5.99, cat = [2], val = 6.55, and so on...
然而,我不知道如何不仅访问category.id
,而且访问实际的category.name
。。。我理解为什么我要得到category.id
(来自关联表(。
问题
- 如何更新我的查询,以便返回包含此信息
- 如何在Jinja中引用它
您可以在类别表中进行backref
risks = db.relationship("Product",
secondary=product_category_table,
back_populates="categories",backref=db.backref('cat'))
使用jinja2中的product.cat.name
或product.cat.risks
访问它使用backref后,您可以访问类别的所有行