![](/img/trans.png)
[英]Flask sqlalchemy how to manage additional information in a many-to-many relationship
[英]Flask SQLAlchemy query information in many to many relationship
我想查询由我的 order_id 过滤的数据库,并可以访问 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
(来自关联表)。
问题
您可以在类别表中创建 backref
risks = db.relationship("Product",
secondary=product_category_table,
back_populates="categories",backref=db.backref('cat'))
在使用 backref 后,使用 jinja2 中的product.cat.name
或product.cat.risks
访问它,您可以访问 Categories 的所有行
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.