2014-03-27 50 views
1

我有两个表格我想链接。


-id
-name

事件
-id
-T1
-T2
-date如何在flask-sqlalchemy上声明关系

现在我该怎样创建关系如果我想获得团队名称(t1.name,t2.n ame)当我尝试根据日期范围获取所有事件时?我有正确的关系吗?

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')) 
+0

这可能是值得张贴你所得到的错误的堆栈跟踪。 –

+0

我认为在你的情况下最好使用ManyToMany关系。它会更简单。 – Raz

回答

0

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

我取代这种关系

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'))