我有以下模型类:
class Collection(db.Model):
name = db.StringProperty()
text_keys = db.ListProperty(db.Key)
class Text(db.Model):
name = db.StringProperty()
content = db.StringProperty()
我正在尝试执行以下操作:
class Collections(webapp.RequestHandler):
def get(self):
collections = model.Collection.all() # works fine
for c in collections:
c.number_of_texts = len(c.text_keys) # does not work
template_values = {
'collections': collections,
}
我当然不是 python 专家,但这不应该工作吗?
更新:
不起作用我的意思是变量 number_of_texts 没有添加到模型对象中。
在我的 django-template 中,以下代码除了集合名称之外什么都不生成:
{% for c in collections %}
<p>{{c.name}}, number of texts: {{c.number_of_texts}}</p>
{% endfor %}
解决方案:
感谢 RocketDonkey 指出这可以使用 django 格式以更优雅的方式完成:
{% for c in collections %}
<p>{{c.name}}, number of texts: {{c.text_keys|length}}</p>
{% endfor %}
或者通过将带有名称和长度的单独字典传递给模板,如果应该出现没有良好格式解决方案的类似问题。