【问题标题】:Get first item of QuerySet in template获取模板中 QuerySet 的第一项
【发布时间】:2011-04-01 00:53:53
【问题描述】:

在我的博客应用程序中,我想显示博客文章列表以及与该文章相关联的第一张图片。现在我这样做:

{% for image in entry.image_set.all|slice:"1" %}
    <img src="{{ image.get_absolute_url }}">
{% endfor %}

是否有我不知道的模板快捷方式,或者我应该编写自己的管理器?

【问题讨论】:

    标签: django django-templates


    【解决方案1】:

    不会更短,但您可以使用 first:

    {% with entry.image_set.all|first as image %}
      <img src="{{ image.get_absolute_url }}">
    {% endwith %}
    

    【讨论】:

    • 谢谢。它稍微干净一些,“感觉”更好。计算上有什么区别吗?
    • @voypyg - 我会检查它是否真的从数据库中获取所有内容 - 看看执行的 SQL。
    • 看起来两个过滤器都激活了 SQL LIMIT 子句。
    【解决方案2】:

    从 Django 1.6 开始你可以这样做

    <img src="{{ entry.image_set.first.get_absolute_url }}">
    

    【讨论】:

      【解决方案3】:

      我有以下查询集,我只想在 jinja 模板中从中检索第一个元素。

      <QuerySet [<StudentDetails: StudentDetails object (1)>, <StudentDetails: StudentDetails object (2)>]>
      

      解决方案

      {{ StudentDetails.first.name }}
      

      StudentDetails 是我的模特

      【讨论】:

      • 谢谢!这个答案适合我
      【解决方案4】:

      您还可以这样做: entry.image_set.all.0 在您的模板中。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-05-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-10-16
        • 2020-11-15
        • 2011-07-18
        相关资源
        最近更新 更多