Django的时间戳

时间:2010-12-14 21:17:35

标签: python django django-views

我正在努力学习Django。到目前为止,我完全是绿色的。我从不太好的书中学习 - 我们创造的第一件事是一个简单的博客。所以,在这个例外的结尾,他们希望我对我的博客文章进行排序 - 所以新帖子在最重要的位置。为了实现这个即时补充:

class Meta:
    ordering = ('-timestamp',)
在views.py中

。不幸的是,它什么都没改变 - 我的帖子没有动。这本书对此并不十分具有描述性。我必须在某个地方注册这门课吗?我希望我的伪博客变得好看! :P

提前致谢。

4 个答案:

答案 0 :(得分:1)

您必须提供更多代码,例如,如何从数据库中检索数据。这里有一些订购示例:

http://www.djangoproject.com/documentation/models/ordering/

答案 1 :(得分:1)

有几种方法可以做到这一点。通过添加Meta类,您可以为对象提供固有排序。使用管理器获取all()将按顺序返回每个对象的类似列表的组。我自己没有测试过,但你从filter()获得的列表也应该是有序的。

现在,您也可以在查询时订购:

BlogEntry.objects.all().order_by('-timestamp')

将按降序时间戳排序。

请注意,这两者都预先假定模型中名为'timestamp'的字段包含可排序字段(如DateTimeField,可能在此情况下)

如果添加Meta没有改变您的订单,我怀疑您在其他地方的其他地方进行排序。如何发布应该生成排序列表的查询?

答案 2 :(得分:1)

您必须将Meta添加到模型中(而不是添加到views.py):

class Post(models.Model):
    title = models.CharField()
    timestamp = (...)

    class Meta:
        ordering = ['-timestamp']

现在,每当你收到帖子时,他们都会按时间戳订购。

如果您想了解有关Meta选项的更多信息,请查看documentation

答案 3 :(得分:0)

如果没有更多信息,我相信您的问题的解决方案是class Meta声明需要在代表博客条目的任何模型中(可能在models.py中,而不是views.py)。另外,仔细检查timestamp是BlogEntry类中存储博客条目日期/时间的字段的名称。

class BlogEntry:
    class Meta:
        ordering = ('-timestamp',)

    #rest of the BlogEntry class