我有一个具有 user_key 属性的 Comment 对象,我将 Comment 对象传递给我的 Flask 模板,但我想在每个评论旁边显示 User.username 属性,当我在模板中时,我只有用户密钥。进入模板后,如何根据用户密钥访问用户对象?
这是我的模型类的样子:
class Base(ndb.Model, modelx.BaseX):
created = ndb.DateTimeProperty(auto_now_add=True)
modified = ndb.DateTimeProperty(auto_now=True)
version = ndb.IntegerProperty(default=TIMESTAMP)
_PROPERTIES = set([
'key',
'id',
'version',
'created',
'modified',
])
class Comment(Base):
user_key = ndb.KeyProperty(kind=User, required=True)
comment = ndb.StringProperty(required=True)
like_count = ndb.IntegerProperty(required=False, default=0)
class User(Base, modelx.UserX):
name = ndb.StringProperty(indexed=True, required=True)
username = ndb.StringProperty(indexed=True, required=True)
email = ndb.StringProperty(indexed=True, default='')
active = ndb.BooleanProperty(default=True)
admin = ndb.BooleanProperty(default=False)
federated_id = ndb.StringProperty(indexed=True, default='')
facebook_id = ndb.StringProperty(indexed=True, default='')
twitter_id = ndb.StringProperty(indexed=True, default='')
_PROPERTIES = Base._PROPERTIES.union(set([
'name',
'username',
'avatar_url',
]))
然后我像这样渲染模板:
query = model.Comment.query()
comment_dbs = query.fetch()
return flask.render_template(
'filename.html',
html_class='classname',
title='Title here',
comment_dbs=comment_dbs
)
最后,在模板文件中,这是我想访问我的用户名和用户对象上的头像属性之类的地方:(这段代码只是在我想要的地方打印出用户密钥把用户名。
# if comment_dbs
{% for c in comment_dbs %}
{{c.user_key}}{{c.comment}}<br>
{% endfor %}
# endif
我知道在 Python 中我可以做一个 key.get() 来返回我想要的对象,但是有没有办法在模板中做到这一点?
我是否需要遍历 Comment 对象,然后根据每个键查找 User 对象,然后将该 User 对象数组传递给模板?看起来有点乱,可能有更好的方法......