如何使用A表中属于B表的外键从B表中的字段中查询数据?

问题描述 投票:0回答:1

我想使用Edetails中的organiser_id来查询User中的forename并将其显示在html页面上

我必须在这里写什么才能这样做? 忽略未闭环/选择,代码太长

     {% for event in edetails %}
        {% if event.weekday == "Monday" %}
        {% if event.clubOrEvent == "club" or event.weeknum == thisweek %}
                <div class="modal-body">
                  Date/Starting Date: {{ event.date }}
                  <br>
                  Open to year: {{ event.yearGroup }}
                  <br>
                  Organiser: {{ **HERE** }}
                </div>

views.py 定义 home.html 的视图

from flask import Blueprint, render_template
from flask_login import current_user
from .models import Edetails,User
from datetime import date

views = Blueprint('views', __name__)

#defining homepage to be home.html

@views.route('/', methods=['GET', 'POST'])
def home():
    return render_template(
        "home.html",
        user=current_user,
        edetails=Edetails.query.all(),
        thisweek = (date.today()).isocalendar()[1],
        users = User.query.all()
    )

models.py 其中定义表

from . import db
from flask_login import UserMixin


#defining tables in the database

class User(db.Model, UserMixin):
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(15))
    forename = db.Column(db.String(50))
    surname = db.Column(db.String(50))
    email = db.Column(db.String, unique=True)
    password= db.Column(db.String(50))
    events = db.relationship('Edetails')

class Edetails(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(30))
    maxSpaces = db.Column(db.Integer)
    date = db.Column(db.Date)
    time = db.Column(db.Time)
    location = db.Column(db.String(50))
    yearGroup = db.Column(db.String(50))
    weekday = db.Column(db.Integer)
    clubOrEvent = db.Column(db.String(5))
    description = db.Column(db.String(300))
    organiser_id = db.Column(db.Integer, db.ForeignKey('user.id'))
    weeknum = db.Column(db.Integer)
python html flask flask-sqlalchemy
1个回答
0
投票

下面的示例向您展示了如何使用

User
Edetails
 中访问 
relationship
类型的管理器。

class Edetails(db.Model):
    id = db.Column(db.Integer, primary_key=True)

    # ...

    organiser_id = db.Column(db.Integer, db.ForeignKey('user.id'))
    organiser = db.relationship('User')

活动的组织者可以通过属性

organiser
查询。因此也可以到达名字。

Organiser: {{ event.organiser.forename }}
© www.soinside.com 2019 - 2024. All rights reserved.