Django Templates First element of a List

…衆ロ難τιáo~ 提交于 2019-12-20 16:58:43

问题


I pass a dictionary to my Django Template,

Dictionary & Template is like this -

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 %}

Now docs is a list of userdocs type. i.e. is an instance. So first filter returns me this instance. From this I need to extract it's id. How do I do that?

I tried {{ v.docs|first }}.id and various other futile trials.


回答1:


You can use the {% with %} templatetag for this sort of thing.

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



回答2:


You can try this:

{{ v.docs.0 }}

Like arr.0

You can get elements by index (0, 1, 2, etc.).




回答3:


I don't know if this is helpful..

What you want is the first value of an iterable (v.docs) and you are iterating over another encapsulating iterable (lists).

For the count, I would do the same, but for the first element.. I'd iterate over the v.docs individually and retrieve the first value via an inner loop.

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

Note: the first filter is applied to v.docs , not doc. Yeah. It involves another loop :(



来源:https://stackoverflow.com/questions/4286461/django-templates-first-element-of-a-list

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!