按创建日期排序 Django

hol*_*son 2 django django-models

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

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

  class Meta:
    order_with_respect_to = 'created_at'
Run Code Online (Sandbox Code Playgroud)

当我尝试运行syncdb时出现以下错误

AttributeError: 'NoneType' object has no attribute 'to'
Run Code Online (Sandbox Code Playgroud)

任何帮助表示赞赏

Pet*_*per 5

这不是目的order_with_respect_to- 它用于将模型标记为相关模型的有序模型。就我个人而言,我从未有过使用它的机会,所以我无法真正从经验中谈论它 - 只能说这不是简单的日期排序的方式。

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

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

     class Meta:
         ordering = ['created_at']
Run Code Online (Sandbox Code Playgroud)

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