从Jinj访问SQLAlchemy关系数据

2024-04-20 09:27:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图从一个相关的数据库表中访问数据,并在前端的一些表中显示这些数据,但很难做到这一点。这就是我目前所拥有的(简化为重要代码)。在

数据库模型:

class Client(Base):
    __tablename__ = 'Client'
    id = db.Column(db.Integer, primary_key=True)
    clientname = db.Column(db.String(50), unique=True, nullable=False)
    provider = db.Column(db.Boolean, default=False)
    sessions = db.relationship('Session', backref='client')
    contacts = db.relationship('Contact', backref='client')
    region_id = db.Column(db.Integer, db.ForeignKey('Region.region_name'),
            nullable=False)

class Contact(Base):
    __tablename__ = 'Contact'
    id = db.Column(db.Integer, primary_key=True)
    contact_name = db.Column(db.String(50), nullable=False)
    contact_phone = db.Column(db.String(50), nullable=False)
    contact_email = db.Column(db.String(50), nullable=False)
    client_id = db.Column(db.Integer, db.ForeignKey('Client.clientname'),
            nullable=False)

然后我的桌子上有金贾模板:

^{pr2}$

以及我传递给render_模板的查询:

session_details = Session.query.all()
return render_template('tables.session.html', session_details=session_details, passing_alert=passing_alert)

但我无法访问联系人姓名. 谁能给我指出正确的方向吗?在


Tags: clientid数据库falsetruedbstringsession
1条回答
网友
1楼 · 发布于 2024-04-20 09:27:26

答案如下:

根据@Ilja Everiläcomment,由于您使用的是1:n关系,Client的contact属性是contacts对象的集合,您需要像这样迭代它:

<tbody>
      {% for item in client_details %}
          <tr>
         <td>{{ item.client_name }}</td>
         {% for contact in item.contacts %}
         <td>{{ contact.contact_name }}</td>
         {% endfor %}
          </tr>
       {% endfor %}
</tbody>

您可以这样渲染模板:

^{pr2}$

相关问题 更多 >