0

我的一些代码:

u = User.query.filter_by(username=requested_username.lower()).first()


teamie = Team.query.filter_by(name=requested_team)
team = teamie.filter_by(user_id=u.id).first()

^我做错了什么?(它不起作用 - 但我不知道为什么还有将两条与团队相关的线路合并为一条线路?

4

1 回答 1

0

这取决于你的 sqlalchemy 设置的其余部分,但如果我猜你的设置,我认为这可能会奏效:

u = User.filter_by(User.username==requested_username.lower()).first()

teamie = Team.filter_by(Team.name==requested_team)\
             .filter_by(Team.user_id==u.id).first()

这是一个解释:首先,在您的 filter_by 语句中,您需要一个双等号“==”而不仅仅是“=”。此外,它实际上是具有查询方法的会话对象,而不是模型本身,因此您不需要查询,除非您像这样使用它(我假设您的会话对象实际上称为会话):

u = session.query(User).filter_by(User.username==requested_username.lower()).first()

teamie = session.query(Team).filter_by(Team.name==requested_team)\
                            .filter_by(Team.user_id==u.id).first()

最后,您通常需要在过滤器语句中使用 model.column 语法。希望能有所启发。

于 2012-12-27T02:30:21.560 回答