Выборка просто Ключа/идентификатора от ReferenceProperty в Механизме Приложения

Я мог использовать немного справки на земле AppEngine...

Используя [Python] API я создаю отношения как этот пример из документов:

class Author(db.Model):
    name = db.StringProperty()

class Story(db.Model):
    author = db.ReferenceProperty(Author)

story = db.get(story_key)
author_name = story.author.name

Насколько я понимаю тот пример сделает два запроса хранилища данных. Один для выборки Истории и затем одной к отсрочке Автор inorder для доступа к имени. Но я хочу смочь выбрать идентификатор, сделайте что-то как:

story = db.get(story_key)
author_id = story.author.key().id()

Я хочу просто получить идентификатор от ссылки. Я не хочу иметь к отсрочке (поэтому запрашивают хранилище данных), значение ReferenceProperty.

От чтения документации это говорит это

значением ReferenceProperty является Ключ

Который приводит меня думать, что я мог просто назвать .id () на значении ссылки. Но это также говорит:

Модель ReferenceProperty обеспечивает функции Ключевых значений свойств, таких как автоматическое разыменование.

Я не могу найти ничего, что объясняет, когда эта ссылка происходит?
Действительно ли безопасно назвать .id () на значении ReferenceProperty?
Можно предположить, что вызов .id () не вызовет поиск хранилища данных?

16
задан David Underhill 21 July 2010 в 21:19
поделиться

1 ответ

Отвечая на свой вопрос ради помощи товарищам по поиску ...

Как подозревается, вызывает story.author.key (). Id () или даже story.author.id () приведет к запросам к хранилищу данных. Правильный метод , продиктованный документами API :

story = db.get(story_key)
author_id = Story.author.get_value_for_datastore(story).id()
27
ответ дан 30 November 2019 в 21:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: