Django模板列表的第一个元素
我把一个字典传给了我的Django模板,
字典和模板大致是这样的 -
lists[listid] = {'name': l.listname, 'docs': l.userdocs.order_by('-id')}
{% for k, v in lists.items %}
<ul><li>Count: {{ v.docs.count }}, First: {{ v.docs|first }}</li></ul>
{% endfor %}
现在,docs
是一个 userdocs
类型的列表,也就是说它是一个实例。所以 first
过滤器会给我这个实例。接下来我需要从中提取它的 id
。我该怎么做呢?
我试过
{{ v.docs|first }}.id
以及其他各种无效的尝试。
3 个回答
8
我不知道这是否有帮助……
你想要的是一个可迭代对象(v.docs)的第一个值,而你正在遍历另一个包含的可迭代对象(lists)。
对于计数,我会做同样的事情,但针对第一个元素……我会单独遍历 v.docs,并通过一个内部循环来获取第一个值。
{% for doc in v.docs %}
{% if v.docs | first %}
<li>doc</li>
{% endif %}
{% endfor %}
注意:第一个过滤器是应用在 v.docs 上,而不是 doc。没错,这涉及到另一个循环 :(
77
你可以试试这个:
{{ v.docs.0 }}
就像 arr.0
这样。
你可以通过索引来获取元素(比如 0
、1
、2
等等)。
63
你可以使用 {% with %}
这个模板标签来实现这种功能。
{% with v.docs|first as first_doc %}{{ first_doc.id }}{% endwith %}