事务中的Model.get(list_of_keys),过滤单个实体组而不是抛出BadRequestError

时间:2012-12-12 03:04:33

标签: google-app-engine

我有一个密钥列表,它应该是MyModel实体的子代(但有些可能不是),我希望获得事务中这些密钥引用的实体。一种方法是:

ifilter(None, ModelX.all().ancestor(Y).filter('__key__', xk).get() for xk in xkeys)

但是为每个密钥运行单独的查询似乎效率低下。有没有办法在事务中的键列表上运行IPN.get(),保留顺序,但忽略不属于实体组的那些,而不是抛出BadRequestError?

2 个答案:

答案 0 :(得分:1)

假设xkeys是一个键列表

results = [db.get(xk) for xk in xkeys]

但是,我认为你可以做到:

results = db.get(xkeys)

哦,我刚读过你说的(但有些可能不是)。这就是问题。交易中涉及的所有实体必须位于同一祖先组中。所以要做到这一点,你必须从列表中删除没有相同祖先的实体。

答案 1 :(得分:0)

似乎没有办法按照我的要求进行操作,所以我从事务中返回了密钥并在其外部执行了db.get(ks)。