次のモデル クラスがあります。
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 %}
解決:
django フォーマットを使用すると、よりエレガントな方法でこれを行うことができることを指摘してくれた RocketDonkey に感謝します。
{% for c in collections %}
<p>{{c.name}}, number of texts: {{c.text_keys|length}}</p>
{% endfor %}
または、名前と長さを含む別の辞書をテンプレートに渡すことによって、適切なフォーマットの解決策がない同様の問題が発生する必要があります。