假设我有以下内容:
class Person(db.Model):
name = db.StringProperty()
我想使用模板在html文件中打印所有名称。
template_values = {'list': Person.all()}
模板看起来像这样:
{% for person in list %}
<form>
<p>{{ person.name}} </p>
<button type="button" name="**{{ person.id }}**">Delete!</button>
</form>
{% endfor %}
理想情况下,我想使用person.key或person.id然后能够使用密钥删除记录,但似乎不起作用。任何想法我怎样才能做到这一点?
答案 0 :(得分:6)
使用{{person.key.id}}
,而不只是{{id}}
。这将调用每个对象的.key().id()
方法。
但是,您还应该知道,将Person.all()
作为模板值传递并不一定是个好主意; .all()
返回一个db.Query
对象,可以将其视为可执行的迭代,但在迭代查询时会执行多个RPC;相反,您应该使用类似Person.all().fetch(SOME_NUMBER)
的内容,其中SOME_NUMBER是向用户显示的合理数量(如果您坚持尝试在一个视图中显示所有内容,则为任意大数字。)
答案 1 :(得分:0)
在其中一个代码示例中找到解决方案:
template_values = {'list': **list**(Person.all())}
在模板中:
{% for person in list %}
<form>
<p>{{ person.name}}</p>
<button type="button" name="**{{ person.key }}**">Delete!</button>
</form>
{% endfor %}
正如Wooble建议的那样,你可能想尝试Person.all()。fetch(SOME_NUMBER)。