如果我没记错的话,a KeyProperty
会返回a ndb.Key
。获得密钥后,很容易获得模型实例(key.get()
)。因此,在你的示例中,你将:
print post.user.get().name
至于在Jinja模板中访问它-当然,只是这样:
{% for post in posts %}
{{ post.message }}
{{ post.user.get().name }}
{% endfor %}
是的,这将与你拥有的每个密钥一次与数据存储交互。如果愿意,可以将其分解为一个数据存储交互:
keys = [p.user for p in posts]
users = ndb.get_multi(keys)
user_posts = zip(users, posts)
然后在你的jinja模板中:
{% for user, post in user_posts %}
{{ post.message }}
{{ user.name }}
{% endfor %}