Вы не можете фильтровать по ключу. Упс, я был неправ в этом.Вы можете фильтровать по ключу и другим свойствам одновременно, если у вас есть индекс, настроенный для его обработки.Это выглядело бы так:
key = db.Key.from_path('MyModel', 'keyname')
MyModel.all().filter("__key__ =", key).filter('foo = ', 'bar')
Вы также можете искать несколько моделей по их ключам, идентификаторам или именам ключей с помощью семейства методов get
.1009 * Таким способом вы можете получить много объектов.Я не знаю точного предела.Если какой-либо из ключей не существует, вы получите None
в списке для этой сущности.
Если вам нужно отфильтровать как некоторое свойство, так и ключ, вам придетсясделать это в два этапа.Либо выбирайте по ключам и проверяйте свойство, либо запрашивайте свойство и проверяйте ключи.
Вот пример фильтрации после выборки.Обратите внимание, что вы не используете метод класса Query filter
.Вместо этого просто отфильтруйте список.
models = MyModels.get_by_key_name('asdf', ...)
filtered = itertools.ifilter(lambda x: x.foo == 'bar', models)