I would like to display query results for my database, but it confuses me - it doesn't act as I would expect, not displaying anything every time. My models:
class Ball(Base):
__tablename__ = 'balls'
id = Column(Integer, primary_key=True)
ball_id = Column(Integer, ForeignKey('fields.id'))
ball = relationship("Field", back_populates="fields")
class Field(Base):
__tablename__ = 'fields'
id = Column(Integer, primary_key=True)
nickname = Column(String)
places = relationship("Ball", order_by=Ball.id, back_populates="fields")
My code in Flask:
@app.route("/addball", methods=['GET', 'POST'])
def addball():
records = dict()
with create_session() as session:
for field in session.query(Field).order_by(Field.nickname.asc()).all():
record = (session.query(Field).
join(Ball).
filter(Ball.field_id == field.id))
if record:
records[field.id] = record
return render_template("addball.html", form=form, records=records)
and Jinja template:
{% for key, field in records.items() %}
{% for elem in field %}
{{ elem }}
{% endfor %}
{% endfor %}
What I want to accomplish: I want to be able to display id
and ball_id
and also nickname
for every field. My best shot so far was to display query in Jinja template, like so:
SELECT fields.id AS fields_id, fields.nickname AS fields_nickname FROM fields JOIN balls ON balls.id = balls.ball_id WHERE balls.ball_id = ?