代码之家  ›  专栏  ›  技术社区  ›  Srikar Appalaraju Tonetel

Django模板列表的第一个元素

  •  23
  • Srikar Appalaraju Tonetel  · 技术社区  · 14 年前

    我把字典传给我的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 回复  |  直到 12 年前
        1
  •  53
  •   Daniel Roseman    14 年前

    你可以使用 {% with %} 这类事情的模板标记。

    {% with v.docs|first as first_doc %}{{ first_doc.id }}{% endwith %}
    
        2
  •  38
  •   Ronan Boiteau    7 年前

    你可以试试这个:

    {{ v.docs.0 }}
    

    就像 arr.0

    可以按索引获取元素( 0 , 1 , 2 等等)。

        3
  •  5
  •   Johnson    11 年前

    我不知道这是否有用。。

    您需要的是iterable(v.docs)的第一个值,并且您正在迭代另一个封装iterable(list)。

    对于伯爵,我也会这么做,但是对于第一个元素。。 我将逐个迭代v.docs并通过 一个内环。

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

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