我有一个密钥列表,它应该是MyModel实体的子代(但有些可能不是),我希望获得事务中这些密钥引用的实体。一种方法是:
ifilter(None, ModelX.all().ancestor(Y).filter('__key__', xk).get() for xk in xkeys)
但是为每个密钥运行单独的查询似乎效率低下。有没有办法在事务中的键列表上运行IPN.get(),保留顺序,但忽略不属于实体组的那些,而不是抛出BadRequestError?
答案 0 :(得分:1)
假设xkeys是一个键列表
results = [db.get(xk) for xk in xkeys]
但是,我认为你可以做到:
results = db.get(xkeys)
哦,我刚读过你说的(但有些可能不是)。这就是问题。交易中涉及的所有实体必须位于同一祖先组中。所以要做到这一点,你必须从列表中删除没有相同祖先的实体。
答案 1 :(得分:0)
似乎没有办法按照我的要求进行操作,所以我从事务中返回了密钥并在其外部执行了db.get(ks)。