2011-07-13 17 views
5

Tengo en mi opinión los comentarios y quiero ordenarlos con el último comentario en la parte superior de la lista. Sin embargo, no está funcionando. Me sale este errorDjango: quiero ordenar los comentarios por fecha y hora

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

no estoy tan seguro de lo que está causando este problema. Aquí están mis puntos de vista y mi modelo que pueden ayudar.

Vistas

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

modelos

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) 

Respuesta

2

comentario en comments = Comment.objects.latest('datetime') no es una colección de comentarios; es un simple comentario .

Lo que quiere hacer es crear una matriz de objetos de comentarios y recorrerlos.

6

la manera más limpia es añadir un meta clase a su modelo y agregar el parámetro de pedidos así:

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) 

Así que todas las consultas que realice se ordenó por dat etime.

Otro consejo no es elegir "datetime" como nombre de campo, datetime es un módulo de python incluido en la lib estándar.