我传递给模板的一个对象有一个调用方法,该方法active_children
返回一个OrderedDict
其键是 Python 类(确切地说是 Django 模型)和应用了某些过滤器的那些模型的 QuerySets 值。
我在模板中有如下内容:
{% 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。