2011-07-13 92 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模塊。

相關問題