2013-06-11 24 views
0

我正在使用python和sqlalchemy。我有一個名爲Team的表,另一個名爲Game。遊戲表具有「away_id」和「home_id」列,並且Team表具有「team_id」列。我剛剛爲Team類創建了這個hybrid_method,它將返回其中的away_id或home_id與team_id匹配的所有遊戲實例。我傳遞它的參數s是一個會話實例。我怎樣才能將這段代碼寫成@hybrid_property,我不必將它傳遞給會話實例?SQLAlchemy hybrid_method - 傳遞明顯的參數

@hybrid_method 
def games(self, s): 
    return s.query(Game).filter(or_(Game.away_id==self.team_id, Game.home_id==self.team_id)).all() 

回答

1

首先,從我可以在這裏看到這不是一個用例「@hybrid」混合用於具體的使用情況下,你想說:「MyClass.games ==東西「,在課程級別,以及」my_object.games == something「,在實例級別。在這裏並不是這樣,你試圖完整地運行一個查詢,將一個特定的self.team_id傳遞給它 - 所以你需要一個self,所以這只是一個常規的方法或描述符。

所以只需要使用@屬性與object_session()作爲文檔say right here

class MyClass(Base): 
    # ... 

    @property 
    return object_session(self).query(Game).filter(...)