【问题标题】:last row of a queryset in django templatedjango 模板中查询集的最后一行
【发布时间】:2013-09-29 10:25:57
【问题描述】:

我在 Django 模板中设置了一个查询。它有一个价格列。我只想显示最后一行的价格。是否有任何模板过滤器可以帮助解决这个问题?

【问题讨论】:

  • 你读过/检查过django模板的文档吗?
  • 你尝试过来自 django 文档的last 吗?
  • 我认为将视图中的最后一行拆分出来然后在模板中调用结果会更有用,这样您的逻辑在它到达模板之前就得到了处理。

标签: python django django-models django-templates


【解决方案1】:

那些建议使用过滤器 {{ queryset |最后一个}}不对。这样你会得到“不支持负索引”。

因此,唯一的方法似乎是编写自定义过滤器或使用丑陋的结构,例如:

{% for obj in queryset %}
    {% if forloop.last %}
        {{ obj.price }}
    {% endif %}
{% endfor %}

UPD:根据 Django 更改日志 {{ queryset.last }} 将从 1.6 开始工作

【讨论】:

  • queryset.last 给出了与您的过滤器匹配的最后一项,不是您选择的集合中的最后一项。 forloop.last != 1.6 中的 queryset.last。前者帮了我!
  • 现在正确的方法就是调用{{ queryset.last }}
【解决方案2】:

正如https://stackoverflow.com/a/18978385/2478304 中提到的 Django 2.2 作品

{{ order.first.id }}
{{ order.last.id }}

【讨论】:

    【解决方案3】:

    对我来说,queryset.reverse()first 模板过滤器在获取查询集的最后一个条目方面做得很好:

       {{ objects.reverse.all|first }}
    

    【讨论】:

      猜你喜欢
      • 2020-09-12
      • 1970-01-01
      • 2018-12-20
      • 1970-01-01
      • 2013-06-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-02
      相关资源
      最近更新 更多