Не удалось получить доступ к свойству ID из объекта хранилища данных

Используя SDK Google App Engine и Python, я столкнулся с проблемой: я не могу получить доступ к свойству идентификатора для данных свойств объекта. Единственными доступными для меня свойствами являются те, которые определены в моей модели класса, плюс свойство ключа (см. Ответ ниже):

class Question(db.Model): text = db.StringProperty() answers = db.StringListProperty() user = db.UserProperty() datetime = db.DateTimeProperty() 

Я могу получить доступ к текстам, ответам, пользователям, датам и ключевым свойствам. Однако я не могу получить доступ к свойству ID. Например, после извлечения всех объектов (используя Question.all ()):

 # OK Within a template, this will return a string : {{ question.text }} # OK, this will return the entity key : {{ question.key }} # KO this will return nothing : {{ question.id }} 

Есть идеи ? Благодаря !

Согласно документации , нет метода id() определенного для подклассов Model.

Вместо этого попробуйте {{ question.key }} .

Также обратите внимание, что ключ не создается до тех пор, пока объект не будет сохранен в хранилище данных.


Изменить: больше информации на основе редактирования OP:

Поскольку мы действительно после числового идентификатора , мы могли бы сделать что-то подобное в нашем шаблоне:

{{ question.key.id }}

Еще одно замечание: вы не должны ожидать увеличения числовых идентификаторов в значении, соответствующем порядку создания сущности. На практике это обычно – но не всегда – случай.

Я просто нашел возможное (неэлегантное, IMO) решение. После запроса и выборки сущностей проведите все их по очереди и вручную добавьте параметр id:

 query = Question.all() questions = query.fetch(10) # Add ID property : for question in questions: question.id = str(question.key().id()) 

Я не думаю, что это эффективный процессор, но он работает как быстрое / грязное исправление.