如何在Django模板中获取一定数量的元素

时间:2018-07-16 17:51:56

标签: django templates for-loop if-statement

我想知道将if语句放入for循环中时如何获得特定数量的项目

我知道我们可以做{% for i in items|slice ":5"%}来获得许多物品,但是当我这样做时

{% for post in posts %}
    {% for img in post_imgs %}
        {% if img.link == post.link %}
            <img class="class" src="{{img.img.url}}" style="width:100%">
        {% endif %}
    {% endfor %}
{% endfor %}

在if标记内无法执行此操作。任何解决方案

1 个答案:

答案 0 :(得分:3)

来自this answer

  

不建议在Django模板中更改对象的状态。   您可能应该硬着头皮计算条件   事先将额外的状态传递给模板,以便您简化   模板逻辑。

因此,您只需在视图中用python做比较,就像这样:

post_imgs_filtered = [img for img in post_imgs if img.link == post.link]

然后在您的模板中:

{% for img in post_imgs_filtered|slice ":5" %}
    <img class="class" src="{{img.img.url}}" style="width:100%">
{% endfor %}