2014-03-27 48 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'))