如何按照发布日期显示最新的5个帖子?

时间:2015-12-31 10:13:04

标签: python django django-models django-templates

所以我有这个模型:

class Post(models.Model):
    title = models.CharField(max_length=100, default='')
    text = models.TextField(default='')
    status = models.CharField(max_length=1, choices=STATUS_CHOICES,default='w')
    description = models.TextField(default='', max_length=300)
    creation_date = models.DateTimeField(auto_now_add=True, editable=False)

    def __unicode__(self):
        return self.title

    def edit_text(self, text):
        self.text = text

    class Meta:
        get_latest_by = 'creation_date'

我的观点:

def blog(request):
return render_to_response('home/blog.html', {
    'posts': Post.objects.filter()[:5]
})

和模板:

{% for post in posts %}
        <a class = "titles">{{ post.title }}</a>
        <p class = "Parg">{{ post.description }}</a>
        <br>
        <br>
 {% endfor %}

我希望在我的模板中显示最新的5个帖子(按日期),如果我按&#34;请参阅更多&#34;显示下5个帖子。

2 个答案:

答案 0 :(得分:2)

您可以使用creation_date将最新的5篇帖子(按order_by排序)传递到模板:

def blog(request):
    return render_to_response('home/blog.html', {
        'posts': Post.objects.order_by('-creation_date')[:5]
    })

-前面的creation_date表示返回的日期将按降序排列,即最近的日期。

要添加显示接下来的5个帖子的功能,我会使用我建议的方法将最近的10个Post返回到模板,然后使用其他方法(可能是基本的JavaScript)来操作它们,

答案 1 :(得分:0)

def blog(request):
    return render(request, 'home/blog.html', {
        'posts': Post.objects.order_by('-creation_date')[:5]
    })

render而不是render_to_response,它会为您处理上下文实例。