Python Django模板列表的第一个元素

Python Django模板列表的第一个元素,python,django,django-templates,django-filters,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 %} lists[l

我把字典传给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 %}
lists[listid]={'name':l.listname,'docs':l.userdocs.order_by('-id')}
{lists.items%}
  • 计数:{{v.docs.Count},第一:{{v.docs|First}
    • {%endfor%}
现在
docs
userdocs
类型的列表。i、 e.就是一个例子。所以
first
filter会返回这个实例。从这里我需要提取它的
id
。我该怎么做

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

您可以使用
{%with%}
模板标签来实现这类功能

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

我不知道这是否有用

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

对于计数,我也会这样做,但对于第一个元素。。 我将逐个迭代v.docs并通过 内环

{% for doc in v.docs %}
    {% if v.docs | first %}  
    <li>doc</li>
    {% endif %}
{% endfor %}
{%for v.docs%中的文档]
{%if v.docs | first%}
  • 医生
  • {%endif%} {%endfor%}
    注意:第一个过滤器应用于v.docs,而不是doc。 是 啊它涉及另一个循环:(

    您可以尝试以下方法:

    {{ v.docs.0 }}
    
    arr.0


    你可以通过索引(
    0
    1
    2
    ,等等)来获取元素。

    四处搜索并找到了一个替代方法,告诉我这是否是一个糟糕的做法-
    {{v.movies.0.doc.id}
    谢谢你的一般回答。我需要第一个和第二个;)您必须将
    v.docs | first
    更改为
    v.docs | first
    ,因为出现以下错误:
    无法解析剩余部分:“|”from“|”