我有三个有关系的模特。
首先是参与者模型。
class Participant(UserMixin, db.Model):
__tablename__ = 'participants'
id = db.Column(db.Integer, primary_key=True)
email = db.Column(db.String(64), index=True)
team_id = db.Column(db.Integer, db.ForeignKey('teams.id'))
# Relationships
team = db.relationship("Team", back_populates="members")
其次,事件模型。
class Event(db.Model):
__tablename__ = 'events'
id = db.Column(db.Integer, primary_key=True)
第三,团队模式。
class Team(db.Model):
__tablename__ = 'teams'
id = db.Column(db.Integer, primary_key=True)
event_id = db.Column(db.Integer, db.ForeignKey('events.id'))
# Relationships
members = db.relationship('Participant', back_populates="team")
如果他们的团队没有连接到同一事件,则允许多个参与者拥有相同的电子邮件地址。
我正在寻找一个查询,该查询检查是否有参与者与给定的电子邮件地址连接到团队,该团队连接到同一事件。我事先知道event.id和电子邮件地址。
伪代码
def check(EVENTID, EMAIL):
if db.session.query(Team, Event, Participant). \
filter(Team.event_id == EVENTID). \
filter(Participant.team_id == Team.id). \
filter(Participant.email == EMAIL).first():
return true
我认为可以使用连接使用一个查询来完成,但我无法弄明白。请帮忙!