Django Templates List的第一个元素

时间:2010-11-26 15:19:41

标签: python django django-templates django-filters

我将字典传递给我的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 %}

现在docsuserdocs类型的列表。即是一个实例。所以first过滤器会返回此实例。由此我需要提取它id。我该怎么做?

我试过了 {{ v.docs|first }}.id和其他各种徒劳的试验。

3 个答案:

答案 0 :(得分:51)

您可以使用{% with %}模板标签进行此类操作。

{% with v.docs|first as first_doc %}{{ first_doc.id }}{% endwith %}

答案 1 :(得分:36)

你可以试试这个:

{{ v.docs.0 }}

arr.0

您可以按索引(012等获取元素。)

答案 2 :(得分:5)

我不知道这是否有用..

你想要的是可迭代的第一个值(v.docs),你正在迭代另一个封装的iterable(列表)。

对于计数,我也会这样做,但对于第一个元素.. 我将单独遍历v.doc并检索第一个值 内循环。

{% for doc in v.docs %}
    {% if v.docs | first %}  
    <li>doc</li>
    {% endif %}
{% endfor %}

注意:第一个过滤器适用于v.docs,而不是doc。 是啊。它涉及另一个循环:(