【问题标题】:How do I do declare relationship on flask-sqlalchemy我如何在flask-sqlalchemy上声明关系
【发布时间】:2014-05-06 12:26:05
【问题描述】:

我有两个要链接的表。

团队
-id
-name

事件
-id
-t1
-t2
-日期

现在,如果我想在尝试根据日期范围获取所有事件时获取团队名称 (t1.name, t2.name),我该如何创建关系?我是否正确声明了关系?

from sqlalchemy import ForeignKey
from sqlalchemy.orm import relationship
from app import app, db

class Team(db.Model):
    __tablename__ = 'teams'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    name = db.Column(db.String)
    teams_event = relationship('Team', secondary=Event.__tablename__, primaryjoin=id == Event.t1, secondaryjoin=id == Event.t2, lazy='dynamic')

class Event(db.Model):
    __tablename__ = 'events'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    t1 = db.Column(db.Integer, ForeignKey('Team.id'))
    t2 = db.Column(db.Integer, ForeignKey('Team.id'))

【问题讨论】:

  • 可能值得发布您遇到的错误的堆栈跟踪。
  • 我认为在你的情况下最好使用多对多关系。它会简单得多。

标签: python sql sqlalchemy flask flask-sqlalchemy


【解决方案1】:

看来我找到了解决问题的方法。我现在可以获取每个活动的团队信息。

我替换了这段关系

teams_event = relationship('Team', secondary=Event.__tablename__, primaryjoin=id == Event.t1, secondaryjoin=id == Event.t2, lazy='dynamic')

以下内容:

t1_teams = relationship('Team', primaryjoin=('Event.t1 == Team.id'))
t2_teams = relationship('Team', primaryjoin=('Event.t2 == Team.id'))

【讨论】:

    猜你喜欢
    • 2020-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-03
    相关资源
    最近更新 更多