Я мог использовать немного справки на земле 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 () не вызовет поиск хранилища данных?
Отвечая на свой вопрос ради помощи товарищам по поиску ...
Как подозревается, вызывает story.author.key (). Id () или даже story.author.id () приведет к запросам к хранилищу данных. Правильный метод , продиктованный документами API :
story = db.get(story_key)
author_id = Story.author.get_value_for_datastore(story).id()