如何访问Jinja2模板中引用对象的属性(Google App Engine)

2024-04-19 08:30:14 发布

您现在位置:Python中文网/ 问答频道 /正文

考虑一下googleappengine中的以下数据模型

class A(ndb.Model):
    name = ndb.StringProperty()
    b = ndb.KeyProperty(Kind='B')

class B(ndb.Model):
    name = StringProperty()

现在假设我在pythonhttp请求处理程序中执行这个查询

^{pr2}$

我将实体作为模板值传递给Jinja2模板

我在一个对象上迭代

{%for a in entities%}

  {{a.name}}

{% endfor %}

问题是:如何访问Jinja2模板中A引用的B对象的属性?像{a.b.name}}


Tags: 对象name模板处理程序jinja2model数据模型class
2条回答

您有实体的键(b),因此可以直接获取它:

{% set b_entity = a.b.get() %}
{{ b_entity.name }}

(如果实体中有其他属性,则使用set。这样你只需要做一次get()

在这种情况下,ndb asyc api可能有用。。。在

@ndb.tasklet
def get_b_instances_from_a_instances(a_instance):
    b_instance = yield a_instance.b.get_async()
    raise ndb.Return((a_instance, b_instance))

entities = A.query().map(get_b_instances_from_a_instances, limit=200)

现在你的entitieswill be a list,其中每个元组都有一个A的实例,它对应于{}。在

相关问题 更多 >