2011-07-13 9 views
5

Mam na widoku komentarze i chcę je posortować z najnowszym komentarzem na górze listy. Jednak to nie działa. Dostaję ten błąd.Django: chcę posortować komentarze według datetime

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

nie jestem pewien, co jest przyczyną tego problemu. Oto moje poglądy i model, który może pomóc.

Odwiedzin

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

Modele

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) 

Odpowiedz

2

Komentarz w comments = Comment.objects.latest('datetime') nie jest zbiorem komentarza; jest to pojedynczy komentarz .

To, co chcesz zrobić, to utworzyć tablicę obiektów komentarzy i powtórzyć tę operację.

6

najczystsze sposobem jest dodać meta klasy do modelu i dodać parametr zamawiania takiego:

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) 

Więc każdy zapytania dokonać zostaną uporządkowane według dat etime.

Inna rada nie wybiera "datetime" jako nazwy pola, datetime to moduł python zawarty w standardowej bibliotece lib.

Powiązane problemy