我正在使用python和sqlalchemy。我有一个名为Team的表和另一个名为Game的表。游戏表有列"away_id“和"home_id”,团队表有列"team_id“。我刚刚为Team类创建了这个hybrid_method,它将返回away_id或home_id与team_id匹配的所有游戏实例。我传递给它的参数s是一个会话实例。我怎么才能把这段代码写成@hybrid_property,这样我就不必把它传递给session实例了?
@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()发布于 2013-06-17 12:45:26
首先,从我在这里可以看到的是,这不是一个用例,因为“@ here”混合是专门用于这样的用例的:"MyClass.games == something",在类级别,以及"my_object.games == something",在实例级别。这里的情况并非如此,您试图完整地运行一个查询,将一个特定的self.team_id传递给它-所以您需要一个self,所以这只是一个常规的方法或描述符。
所以只需使用@property和object_session()作为文档的say right here
class MyClass(Base):
# ...
@property
return object_session(self).query(Game).filter(...)https://stackoverflow.com/questions/17053142
复制相似问题