我有 User
,has-one
Person
。所以 User.person
是一个 Person
。
我正在尝试从 Person
列表中获取 User
列表。
我尝试了以下方法:
>>> people = Person.query.filter().limit(3)
<flask_sqlalchemy.BaseQuery object at 0x111c69bd0>
>>> User.query.filter(User.person.in_(people)).all()
NotImplementedError: in_() not yet supported for relationships. For a simple many-to-one, use in_() against the set of foreign key values.
如果 User.person
在 people
列表中,获取 User
列表的最佳方法是什么?
最佳答案
正如错误消息告诉您的那样,您需要对外键使用 in_
:
User.query.join(User.person).filter(Person.id.in_(p.id for p in people)).all()
既然你无论如何都要查询两者,那么最好做一个联合负载,然后让人们使用 Python:
people = Person.query.join(Person.user).options(db.contains_eager(Person.user)).limit(3).all()
users = [p.user for p in people]
关于python - 从 SQLalchemy 和 Flask 中的相关列表中查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23436095/