我试图使用提供的键id字符串列表来查询NDB模型。模型具有在创建时分配的字符串ID—例如:

objectKey = MyModel(
    id="123456ABC",
    name="An Object"
    ).put()

现在我不知道如何用列表过滤器查询NDB密钥id。通常可以使用MyModel.property.IN()来查询属性:
names = ['An Object', 'Something else', 'etc']

# This query works
query = MyModel.query(MyModel.name.IN(names))

当我试图按键列表进行筛选时,无法使其正常工作:
# This simple get works
object = MyModel.get_by_id("123456ABC")

ids = ["123456ABC", "CBA654321", "etc"]

# These queries DON'T work
query = MyModel.query(MyModel.id.IN(ids))
query = MyModel.query(MyModel.key.id.IN(ids))
query = MyModel.query(MyModel.key.id().IN(ids))
query = MyModel.query(MyModel._properties['id'].IN(ids))
query = MyModel.query(getattr(MyModel, 'id').IN(ids))
...

我总是犯错误。
我需要能够根据ID列表进行过滤,而不是遍历列表中的每个ID(有时很长)。我该怎么做?

最佳答案

以下方法应该有效:

keys = [ndb.Key(MyModel, anid) for anid in ids]
objs = ndb.get_multi(keys)

关于python - 使用数组过滤器对键ID进行NDB模型查询,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27714761/

10-12 18:15