按created_at日期Django排序

时间:2014-01-28 01:59:18

标签: django django-models

我试图按照创建日期/时间对此模型中的“记录”进行排序,但遇到了问题。

class MyModel(models.Model):     
  created_at = models.DateTimeField(auto_now_add=True)

  class Meta:
    order_with_respect_to = 'created_at'

当我尝试运行syncdb

时,我收到以下错误
AttributeError: 'NoneType' object has no attribute 'to'

任何帮助表示赞赏

1 个答案:

答案 0 :(得分:2)

这不是order_with_respect_to的用途 - 它是用于将模型标记为关于相关模型的有序模型。就我个人而言,我从来没有机会使用它,所以我无法真实地谈论它的经验 - 除了说你不是如何进行简单的约会。

要按创建时间排序,请改为使用ordering meta属性:

 class MyModel(models.Model):
     created_at = models.DateTimeField(auto_now_add=True)

     class Meta:
         ordering = ['created_at']

严格来说,你并不一定要声明这一点。如果您未在模型或查询中声明任何其他排序,则结果将按其PK排序。默认情况下,PK将是一个自动递增系列,因此对象将按其创建顺序隐式排序。但是如果你真的关心排序顺序,那么最好是明确而不是依赖于提升PK的副作用。