App Engine, Python: как отфильтровать запрос по идентификатору? - PullRequest
6 голосов
/ 17 февраля 2010

Я пытаюсь получить данные из хранилища данных ядра приложения.

Фильтрация запроса по «заголовку» (или любому другому свойству) работает:

obj = db.Query(PageModel).filter('title',title)[0]

Но то же самое с ID - не:

obj = db.Query(PageModel).filter('ID',page_id)[0]

Я думаю, что есть что-то особенное в ID и KEYs в хранилище данных, но я не могу найти, как реализовать получение данных по ID.

Ответы [ 2 ]

13 голосов
/ 17 февраля 2010

Попробуйте

obj = PageModel.get_by_id(page_id)

вместо этого. Предполагается, что идентификатором, с которым вы работаете, является числовой идентификатор ключа хранилища данных (т. Е. Он был получен из чего-то вроде obj.key().id()), а не произвольное поле идентификатора, добавленное вами в PageModel.

2 голосов
/ 29 мая 2011

Вы можете фильтровать данные с помощью ключа (ей):

from google.appengine.ext.db import Key
key = Key('bgakaWdyc3NlcnIPCxIJRmVlZEVudHJ5GAwM')

# Match many
PageModel.all().filter('__key__ IN ', [key])
# Match one
PageModel.all().filter('__key__ = ', key) 

Однако метод get_by_id (id) предпочтителен при извлечении одной записи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...