从最新到最旧的Django博客帖子排序

时间:2019-02-02 20:32:02

标签: python django

我设立一个博客网站,当我添加的博客文章,最早的是在列表的顶部。我该如何扭转这种状况,以便使最新帖子位于页面顶部?

这是我的pages / models.py,我不知道ordered_posts = Post.objects.order_by('created_date')是否在正确的位置。我不知道在哪里把它。任何帮助,将不胜感激。谢谢!

 class Post(models.Model):
    title = models.CharField(max_length=50)
    created_date = models.DateTimeField(default=timezone.now)
    published_date = models.DateTimeField(auto_now_add=True blank=True, null=True)
    author = models.ForeignKey(
        'auth.User',
        on_delete=models.CASCADE,
    )
    body = models.TextField()

    ordered_posts = Post.objects.order_by('-created_date')

    def publish(self):
        self.published_date = timezone.now()
        self.save()

    def __str__(self):
        return self.title

1 个答案:

答案 0 :(得分:1)

您可以在类Meta中定义ordering

  

这是字符串和/或查询表达式的元组或列表。每个字符串都是一个带有可选“-”前缀的字段名称,表示降序。没有前导“-”的字段将按升序排列。

class Post(models.Model):
    title = models.CharField(max_length=50)
    created_date = models.DateTimeField(default=timezone.now)
    published_date = models.DateTimeField(auto_now_add=True blank=True, null=True)
    author = models.ForeignKey(
        'auth.User',
        on_delete=models.CASCADE,
    )
    body = models.TextField()

    def publish(self):
        self.published_date = timezone.now()
        self.save()

    def __str__(self):
        return self.title

    class Meta:
        ordering = ['created_date']

See docs