在Django模板中,我使用
获取最新的注释:{{ blog.comments.all|dictsort:"created_at"|last }}
其中blog
为Blog
模型的实例,comments
为ForeignKey
到Comment
模型的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 %}