【发布时间】:2014-12-31 00:49:21
【问题描述】:
我正在尝试使用提供的键 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))
...
我总是收到AttributeError: type object 'MyModel' has no attribute 'id' 错误。
我需要能够按 ID 列表进行过滤,而不是遍历列表中的每个 ID(有时很长)。我该怎么做?
【问题讨论】:
标签: python google-app-engine app-engine-ndb google-cloud-datastore