我正在努力学习Django。到目前为止,我完全是绿色的。我从不太好的书中学习 - 我们创造的第一件事是一个简单的博客。所以,在这个例外的结尾,他们希望我对我的博客文章进行排序 - 所以新帖子在最重要的位置。为了实现这个即时补充:
class Meta:
ordering = ('-timestamp',)
在views.py中。不幸的是,它什么都没改变 - 我的帖子没有动。这本书对此并不十分具有描述性。我必须在某个地方注册这门课吗?我希望我的伪博客变得好看! :P
提前致谢。
答案 0 :(得分:1)
您必须提供更多代码,例如,如何从数据库中检索数据。这里有一些订购示例:
答案 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