Python Django:要按日期时间对注释排序吗

Python Django:要按日期时间对注释排序吗,python,django,datetime,Python,Django,Datetime,我在我的视图中有评论,我想用列表顶部的最新评论对它们进行排序。但是它不起作用。我得到这个错误 呈现时捕获到类型错误:“Comment”对象不可编辑 我不太确定是什么导致了这个问题。以下是我的观点和模型,可能会有所帮助 视图 def home(request): comments = Comment.objects.latest('datetime') return render_to_response('home.html', {'comments':comments}, con

我在我的视图中有评论,我想用列表顶部的最新评论对它们进行排序。但是它不起作用。我得到这个错误

呈现时捕获到类型错误:“Comment”对象不可编辑

我不太确定是什么导致了这个问题。以下是我的观点和模型,可能会有所帮助

视图

def home(request):
    comments = Comment.objects.latest('datetime')
    return render_to_response('home.html', {'comments':comments}, context_instance=RequestContext(request))
class Comment(models.Model):
    name = models.CharField(max_length = 40)
    datetime = models.DateTimeField(default=datetime.now)
    note = models.TextField()
    def __unicode__(self):
        return unicode(self.name)
型号

def home(request):
    comments = Comment.objects.latest('datetime')
    return render_to_response('home.html', {'comments':comments}, context_instance=RequestContext(request))
class Comment(models.Model):
    name = models.CharField(max_length = 40)
    datetime = models.DateTimeField(default=datetime.now)
    note = models.TextField()
    def __unicode__(self):
        return unicode(self.name)

注释在
comments=Comment.objects.latest('datetime')
中不是注释的集合;这是一条单一评论


您要做的是创建一个注释对象数组并对其进行迭代。

最新的
方法只返回一个对象,而不是迭代器:

使用
order\u by
方法按日期排序(文档中的第一个示例):

最干净的方法是向模型中添加一个类元,并像下面这样添加排序参数:

class Comment(models.Model):
    name = models.CharField(max_length = 40)
    datetime = models.DateTimeField(default=datetime.now)
    note = models.TextField()

    class Meta:
        ordering = ['-datetime']
       
    def __unicode__(self):
        return unicode(self.name)
因此,您所做的每个查询都将按日期时间排序

另一个建议是不要选择“datetime”作为字段名,datetime是标准库中包含的python模块


另请参阅Django订购文档。

我假设这就是我所需要的
comments=Comment.objects.order_by('-datetime')
缺少逗号
ordering=('-datetime',)