テンプレートに渡すオブジェクトには、キーが Python クラス (正確には Django モデル) であり、特定のフィルターが適用されたこれらのモデルのクエリセットの値を返すactive_children
というメソッドがあります。OrderedDict
テンプレートには次のようなものがあります。
{% for cls, objs in object.active_children.items %}
{{ cls }}
{% for obj in objs %}
{{ obj }}
{% endfor %}
{% endfor %}
Error during template rendering. coercing to Unicode: need string or buffer, NoneType found
これにより、 の行でエラーが返されます{{ cls }}
。
ただし、すべてを次のように変更すると:
{{ object.active_children.items }}
その後、エラーは発生せず[(<class 'app.MyModel'>, [<MyModel:1>, <MyModel:2>, <MyModel:3>]), (<class 'app.AnotherModel'>, [])]
、ページに出力が表示されます。クラス キーが実際に None ではないことを証明します。
{{ cls }}
最初の例から行を削除しても、エラーは発生しません。次に、QuerySet 内のすべてのオブジェクトが適切に印刷されます。
クラスを Django テンプレートの辞書キーとして引き続き使用する方法はありますか?
Django 1.4.5 / Python 2.7.3 を使用しています。