如何在Flask Jinja模板中正确显示SQLalchemy查询结果

2024-05-15 17:10:21 发布

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

我在Jinja模板页面中无法正确显示SQLAlchemy查询的结果。在

我的项目是基于一级方程式赛车手和他们的车队。我有一个页面,其中列出了车队在F1和它应该列出的司机谁为每个车队比赛(司机和车队类之间的多对多关系)。在

我收到的输出是正确的,但是它似乎被组合在一个列表类型的输出中。我希望每个团队的驱动程序被单独列为字符串,而不是一个组合在一起的列表。在

这是我的代码:

在模型.py在

from datetime import datetime
from app import db


class Team_driver(db.Model):
    # Many-to-many relationship table between Driver and Team
    __tablename__ = "team_driver"
    id = db.Column(db.Integer, primary_key=True)
    team_id = db.Column(db.Integer, db.ForeignKey('team.id'), nullable=False)
    driver_id = db.Column(db.Integer, db.ForeignKey('driver.id'), nullable=False)


class Team(db.Model):
    __tablename__ = "team"
    id = db.Column(db.Integer, primary_key=True)
    teamName = db.Column(db.String(64))
    nationality = db.Column(db.String(64))
    # relationship between Team table and Driver table, reference 'team' in forms
    drivers = db.relationship('Driver', secondary="team_driver", backref='team')

    def __repr__(self):
        # specify variables to return to web page from backref
        return '{}'.format(self.teamName)


class Driver(db.Model):
    __tablename__ = "driver"
    id = db.Column(db.Integer, primary_key=True)
    firstName = db.Column(db.String(64))
    lastName = db.Column(db.String(64))
    raceNum = db.Column(db.Integer)
    nationality = db.Column(db.String(64))
    # relationship between Driver table and Team table, reference 'driver' in forms
    teams = db.relationship('Team', secondary="team_driver", backref='driver')

    def __repr__(self):
        # specify variables to return to web page from backref
        return '{} {}'.format(self.firstName,self.lastName)

在routes.py(仅适用于特定路线)

^{pr2}$

在驱动器详细信息.html在

<!-- teamDetails.html -->

<!-- all other html files must now extend index.html and not base.html -->
{% extends "index.html" %}

{% block content %}
    <h1>Team Details</h1>
    {% for d in details %}
    <div><p>Team Name: {{ d.teamName }}<br>Nationality: {{ d.nationality }}
    <br>Drivers: {{ d.driver }}</p></div>
    {% endfor %}
{% endblock %}

这是我从网页上得到的输出

screenshot of webpage output

我想要的是显示相关驱动程序的页面,但单独显示,没有[]括号。在

有谁能帮我解决问题吗?在

非常感谢。在


Tags: toselfiddbstringhtmldrivertable
1条回答
网友
1楼 · 发布于 2024-05-15 17:10:21

由于d.driver是一个驱动程序列表,因此应该分别打印列表中的每一项,因为如果打印某个内容的列表,它还将包括括号。在

{% block content %}
<h1>Team Details</h1>
{% for d in details %}
  <div><p>Team Name: {{ d.teamName }}<br>Nationality: {{ d.nationality }}
  <br>Drivers: 
  {% for driver in d.drivers %}
    {{ driver }} 
  {% endfor %}
  </p></div>
{% endfor %}
{% endblock %}

相关问题 更多 >