gpt4 book ai didi

django - 如何反转 Django 模板中的 for 循环,然后对结果进行切片

转载 作者:行者123 更新时间:2023-12-02 17:54:58 25 4
gpt4 key购买 nike

在 Django 模板中,我迭代一组照片,并一张一张地显示它们。具体来说,现在我只有一张照片集,包含 6 个物体。我像这样显示这 6 个对象:

{% for pic in picstream.photo_set.all reversed %}
<img src="{{ pic.image_file.url }}"></img>
{% endfor %}

在语句中添加 reversed 可以按所需的顺序提供 6 个对象(即首先是最新的 id)。

接下来,我想显示 photo_set 中不超过 4 个对象。我将 |slice:":4" 添加到 picstream.photo_set.all 来实现此目的。问题是,它从我想要的排序中切断了前两个对象。

似乎应该有一种方法可以首先反转列表,然后稍后进行切片?需要一种简单的方法来做到这一点,而又不影响性能。

最佳答案

您可以使用查询集本身的 reverse 方法,而不是使用 for 模板标记的 reversed 参数:

{% for pic in picstream.photo_set.all.reverse|slice:":4" %}
<img src="{{ pic.image_file.url }}"></img>
{% endfor %}

如果您正在代码中的其他位置评估原始(非反转)查询集,那么这将导致第二个查询命中数据库。如果是这种情况,那么您最好将逻辑移至 View 代码本身或模板标记中。

关于django - 如何反转 Django 模板中的 for 循环,然后对结果进行切片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36977773/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com