使用Flask SQLAlchemy,我正在尝试使用带有其他字段的帮助程序表来使用多对多关系。
模型定义:
@app.route('/orders')
def page_orders():
all_orders = AOrder.query.all()
return render_template('orders.html', orders=all_orders)
调用模板:
{% for o in orders %}
<tr>
<td>{{o.timedate}}</td>
<td>
{% for p in o.products %}
{{p.quantity}} {{p.name}} <br />
{% endfor %}
</td>
</tr>
{% endfor %}
如何在模板上使用数量值? product.quantity为空,但p.name有值:
{{1}}
答案 0 :(得分:1)
您已使用关联表设置关系,该关联表基本上成为产品和订单模型之间的透明链接。
由于您希望在该链接表中存储额外数据,因此您需要将其升级为关联对象,就像您的其他模型一样。
documentation goes into the detail如何做到这一点,这是一个例子:
class Association(Base):
__tablename__ = 'association'
left_id = Column(Integer, ForeignKey('left.id'), primary_key=True)
right_id = Column(Integer, ForeignKey('right.id'), primary_key=True)
extra_data = Column(String(50))
child = relationship("Child", back_populates="parents")
parent = relationship("Parent", back_populates="children")
class Parent(Base):
__tablename__ = 'left'
id = Column(Integer, primary_key=True)
children = relationship("Association", back_populates="parent")
class Child(Base):
__tablename__ = 'right'
id = Column(Integer, primary_key=True)
parents = relationship("Association", back_populates="child")