Поскольку вы знаете, что рассматриваемая сущность будет экземпляром Member
и, вероятно, не будет иметь родительской сущности, гораздо проще (и создает более приятные URL-адреса) использовать имя ключа или идентификатор члена, а неполный строковый ключ.Вы можете получить это с помощью user.key().name()
(user.key.name
в шаблоне Django) или user.key().id()
.Какой из них вам нужен, зависит от того, создали ли вы объект с именем ключа или нет.
Если у вас есть объект электронной почты, вам не нужно извлекать User
из него только для того, чтобы получить его ключ.Вместо этого вызовите Email.user.get_value_for_datastore(member)
, который вернет Key
объект User
, на который он ссылается.Затем вы можете извлечь соответствующее поле по своему желанию.Однако в Django нет способа сделать это, поэтому вам нужно будет либо сделать это вне Django и передать его, либо добавить метод в класс Email
, который возвращает ключ.
Как только выиметь идентификатор или имя и хотите получить объект User
, на который он ссылается, при необходимости вызвать User.get_by_id(id)
или User.get_by_key_name(name)
.