Django模板:从模型queryset对象中提取字段



在Django模板中,我使用

获取最新的注释:
{{ blog.comments.all|dictsort:"created_at"|last }}

其中blogBlog模型的实例,commentsForeignKeyComment模型的related_name实例。

相当于

blog.comments.all().order_by("created_at").last()

问题:我如何获得text字段的评论在模板中?

在视图中,我可以使用:

blog.comments.all().order_by("created_at").last().text

如果我尝试:

{{ blog.comments.all|dictsort:"created_at"|last.text }}

我得到a:

无法解析余数:'。text' TemplateSyntaxError

  • with tag:

    {% with newest_comment=blog.comments.all|dictsort:"created_at"|last %}
        {{ newest_comment.text }}
    {% endwith %}
    
  • cached_property decorator:

    models.py

    from django.utils.functional import cached_property
    class Blog(models.Model):
        @cached_property
        def newest_comment(self):
            return self.comments.order_by('created_at').last()
    

    template.html

    {{ blog.newest_comment.text }}
    
  • 背景:

    context['newest_comment'] = blog.comments.order_by('created_at').last()
    return render(request, template, context)
    
  • latest()方法:

    models.py

    class Comment(models.Model):
        class Meta:
            get_latest_by = 'created_at'
    

    template.html

    {{ blog.comments.latest.text }}
    

一种方法是使用"with":

{% with blog.comments.all|dictsort:"created_at"|last as lastcomment %}
  {{ lastcomment.text }}
{% endwith %}

相关内容

  • 没有找到相关文章

最新更新