如何在Google Apps Engine中轻松查询多对多关系?

时间:2010-10-09 01:22:00

标签: python google-app-engine google-cloud-datastore

如何对多对多关系进行轻量级查询?

用户有很多列表

ListUser是链接它们的模型

目前我这样做但是有很多获取查询来获取所有这些数据。

lists = []
for list in user.lists:
    lists.append(list.list)

现在我明白了:

list_users = user.lists.fetch(1000)
# problem is here: "list.list" will retrive data from database, but I just want that list's key, how to do?
list_keys = [list.list for list in list_users]
lists = List.get_by_key_name(list_keys)

1 个答案:

答案 0 :(得分:0)

您应该使用get_value_for_datastore

list_keys = [ListUser.list.get_value_for_datastore(list_user)
              for list_user in list_users]
lists = db.get(list_keys)

如果您还没有,可能需要查看一些“mastering the datastore”文章。特别是modeling relationships上的那个。也许你可以使用List键列表来完成你需要的东西,也许它会为你节省一个查询。