2011-07-13 15 views
5

Görüşlerime katılmış durumdayım ve onları listenin en üstünde yer alan en son yoruma göre sıralamak istiyorum. Ancak çalışmıyor. Bu hatayı alıyorum.Django: Yorumlara göre sıralamak istiyorum datetime

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

Bu soruna neden olan şey o kadar emin değilim. İşte size yardımcı olabilecek görüşlerim ve modelim.

Görüntüleme

def home(request): 
    comments = Comment.objects.latest('datetime') 
    return render_to_response('home.html', {'comments':comments}, context_instance=RequestContext(request)) 

modelleri

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) 

cevap

7

latest yöntemi yalnızca bir nesne değil, bir yineleyici döndürür Modeliniz bir sınıf meta ekleyebilir ve bunun gibi sipariş parametreyi ekleyin:

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) 

Yani yaptığınız her sorgu dat göre sıralanacaktır Etime.

Başka bir öneri alan adı olarak "datetime" seçeneğini seçmez, datetime standart lib içinde bulunan bir python modülüdür.

+3

İhtiyacım olan şey bu varsayım var. 'yorumlar = Comment.objects.order_by ('- datetime') – Shehzad009

İlgili konular