2012-04-16 3 views
2

Я знаю, что есть способ получить определенную сущность на основе ее идентификатора ключа, используя get_by_id(someId), но есть ли способ получить несколько объектов с идентификатором выше определенного значения? С помощью обычного фильтра мы можем сделать query.filter("customId >", someId), но как это сделать для встроенного идентификатора ключа?Отфильтровать запрос по ID ключа в Google App Engine

+0

Дубликат: http://stackoverflow.com/questions/2544565/filtering-by-entity-key-name-in-google-app-engine-on-python – dragonx

+0

Это для имени ключа. Я спрашиваю о ключевом ID. Идентификатор ключа - это значение int, где имя ключа является буквенно-цифровым. Другой вопрос: как этот парень из связанного вопроса использовал оператор> = для ключевого имени? – Snowman

+1

@mohabithar - это то же самое: ключ может быть длинным или строковым. –

ответ

5

Несмотря на то, что ключ выглядит как большая бессмысленная строка, это на самом деле комбинация вашего идентификатора приложения, типа объекта, а затем либо числового автоматически назначенного идентификатора, либо генерируемого вами имени ключа (родители и пространства имен тоже существуют, но применяются те же основные принципы).

Когда вы делаете сравнение < или> или используете «запрос по» в запросе, это противоречит этим отдельным частям, а не строковой кодировке, которую вы видите. Поэтому, учитывая, что тип приложения и тип сущности одинаковы, вы будете сравнивать или сортировать по частям идентификатора или имени ключа. Документация объясняет это here.

В методе фильтра вы можете использовать «__key__» в качестве имени свойства, а затем построить ключ объекта (в питона по крайней мере), используя Key.from_path

Смежные вопросы