在 Django 模板中,我迭代一组照片,并一张一张地显示它们。具体来说,现在我只有一张照片集,包含 6 个物体。我像这样显示这 6 个对象:
{% for pic in picstream.photo_set.all reversed %}
<img src="{{ pic.image_file.url }}"></img>
{% endfor %}
Adding reversed
该语句给了我所需顺序的 6 个对象(即首先是最新的 id)。
接下来,我想显示不超过 4 个对象photo_set
。我添加了|slice:":4"
to picstream.photo_set.all
为了达成这个。问题是,它切断了前两个对象从我想要的订单。
看来应该有一种方法可以颠倒列表first,并切片later?需要一种简单的方法来做到这一点,而又不影响性能。
而不是使用reversed
论证for
模板标签,您可以使用reverse
查询集本身的方法:
{% for pic in picstream.photo_set.all.reverse|slice:":4" %}
<img src="{{ pic.image_file.url }}"></img>
{% endfor %}
如果您在代码中的其他位置评估原始(非反转)查询集,那么这将导致第二个查询命中数据库。如果是这种情况,那么您最好将逻辑移至视图代码本身或模板标记中。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)