Не удалось получить доступ к свойству 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 }}
Есть идеи ? Благодаря !
- python перебирает список объектов
- Как blit изображение, в python, внутри области определенного изображения?
- Питонический поточно-безопасный объект
- Безопасно ли передавать объекты Entity Key для Google App Engine на веб-страницы для поддержания контекста?
- Объект 'Int' не имеет атрибута
Согласно документации , нет метода 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())
Я не думаю, что это эффективный процессор, но он работает как быстрое / грязное исправление.
- Доступ API Google Analytics без локального браузера в python
- Почему scipy.ndimage.io.imread возвращает PngImageFile, а не массив значений
- В Python, как проверить, существует ли переменная?
- Проблемы с наследованием Python
- Понимание механики sqlite Python в многомодульных средах
- Данные как отношение между объектами в Python
- Сгенерировать объекты из строки
- В Python есть только один объект True и один False?
- как печатать / возвращать класс в python?
- Создайте копию списка, не ссылающегося на содержащиеся объекты
- Как преобразовать объект `lambda` в объект` function` в Python?