我有一个模型Comments
,其中包含另一个模型BaseRecipe
的外键。我有一个DetailView调用BaseRecipe
。我正在执行以下操作以显示BaseRecipe
的所有注释:
{% for comment in object.comment_link.all %}
<h5>Comment {{ forloop.counter }}</h5>
<p>{{ comment.comment_text }}</p>
<p>{{ comment.pub_date |date }}</p>
{%endfor %}
这很有效。但是,我想更改它,以便它只显示最后x个注释。我试过了:
{% for comment in object.comment_link.all{[:5] %}
&安培;
{% for comment[:5] in object.comment_link.all %}
我尝试了一些不同的逻辑,但它不允许我为循环设置初始值(不确定你是否可以在模板中执行此操作)。我想也许我应该在视图中创建一个变量,该变量是最后x个注释的列表?似乎应该有一些简单的操作员来做这件事,我没有偶然发现。
答案 0 :(得分:1)
您可以使用slice
{% for comment in object.comment_link.all|slice:":10" %}
答案 1 :(得分:0)
我不认为这在模板中是可行的。因为您不仅需要5条评论,而且还想订购它们(最新5条)。您可以在BaseRecipe
模型类中添加方法以获取最近的评论。
class BaseRecipe(models.Model):
def get_recent_comments(self, n=5):
return self.comment_link.all().order_by('-id')[:n]
然后在模板中调用此方法
{% for comment in object.get_recent_comments %}