Django:想按日期时间排序评论

She*_*009 7 python django datetime

我在视图中有评论,我想用列表顶部的最新评论对它们进行排序.但它不起作用.我收到这个错误.

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))
Run Code Online (Sandbox Code Playgroud)

楷模

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)
Run Code Online (Sandbox Code Playgroud)

Gar*_*Jax 8

latest方法只返回一个对象,而不是迭代器:https: //docs.djangoproject.com/en/dev/ref/models/querysets/#latest

使用该order_by方法按日期排序(文档中的第一个示例):https: //docs.djangoproject.com/en/dev/ref/models/querysets/#django.db.models.query.QuerySet.order_by

  • 我假设这是我需要的.`comments = Comment.objects.order_by(' - datetime')` (3认同)

Fit*_*ria 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)
Run Code Online (Sandbox Code Playgroud)

因此,您所做的每个查询都将按日期时间排序.

另一个建议是不选择"datetime"作为字段名称,datetime是标准库中包含的python模块.