Преобразование строк в шаблоне веб-приложения GAE - PullRequest
1 голос
/ 11 мая 2011

Я пытаюсь создать строку ключа ReferenceProperty в шаблоне webapp :

Предположим следующую простую модель хранилища данных:

def User(db.Model):
  first_name = StringProperty()
  last_name = StringProperty()

def Email(db.Model):
  user = ReferenceProperty(User)
  email = EmailProperty()

Затем я передаю список объектов Email в шаблон веб-приложения в списке с именем member_list. В шаблоне я хочу создать строку ключа свойства каждого пользователя Email для использования в URL, например:

   {% for member in member_list %}
   <a href="/member_handler/{{INSERT_STRING_OF_MEMBER.USER_KEY_HERE"}}>blah</a>

Я понимаю, что могу передать строку ключа в шаблон, но я бы предпочел выполнить преобразование строки в шаблоне, если это возможно; Я пробовал различные комбинации str() и _ str_ безрезультатно.

Ответы [ 3 ]

1 голос
/ 16 мая 2011

Поскольку вы знаете, что рассматриваемая сущность будет экземпляром 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).

0 голосов
/ 11 мая 2011

member.user.key должен сделать трюк:

{% for member in member_list %}
   <a href="/member_handler/{{member.user.key"}}>blah</a>
0 голосов
/ 11 мая 2011
<a href="/member_handler/{{ member.user.key }}">blah</a>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...