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',)