2011-07-13 69 views
5

我有我的观点评论,我想按照列表顶部的最新评论排序。但它不起作用。我得到这个错误。Django:想根据日期对评论进行排序

Caught TypeError while rendering: 'Comment' object is not iterable

我不敢肯定是什么原因造成了这个问题。这是我的观点和模式,可能有所帮助。

查看

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) 

回答

2

comments = Comment.objects.latest('datetime')评论是不评论的集合;这是一个单一评论

你想要做的是创建一个Comment对象数组,并遍历它。

6

最干净的方式是添加一个类元到模型中,并添加排序参数是这样的:

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) 

所以你尽查询将通过DAT订购ETIME。

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

相关问题