下面这组查询将一堆配置文件连接在一起以返回到网站。
我想用这些查询进行一次查询,因为我想在整个配置文件集合中使用order函数。
# Get all users for who 'currentUser' is an assistant for.
users = Users.query(Users.assistant.IN(currentUser)).fetch()
# Get all profiles that belong to those users and have not been deleted.
for user in users:
profiles = profiles + Profiles.query(
ndb.AND(
Profiles.user == user.username,
Profiles.deleted == False
)
).order(Profiles.history).fetch() # Order all profiles by timestamp
答案 0 :(得分:0)
在某种程度上,你所寻找的东西相当于:
# get the list of usernames obtained above
usernames = [user.username for user in users]
profiles = Profiles.query(ndb.AND(Profiles.user.IN(usernames),
Profiles.deleted == False))
.order(Profiles.history).fetch()
但如果usernames
包含许多元素(显然超过10个左右),则会出现性能问题,请参阅Does the NDB membership query ("IN" operation) performance degrade with lots of possible values?。