2012-04-22 44 views
1

我有两个型号,任务和TaskComment:Django的ORM ORDER_BY

class Task(models.Model): 
    title = models.CharField(max_length = 200) 
    creationDate = models.DateTimeField('date created') 
    lastUpdateDate = models.DateTimeField('date updated') 
    description = models.CharField(max_length = 5000) 

class TaskComment(models.Model): 
    task = models.ForeignKey(Task, related_name='comments') 
    message = models.CharField(max_length = 5000) 
    creationDate = models.DateTimeField('date created') 

试想一下,所有的任务列出的页面。我想要做的事情是订单任务的数量,链接到这个任务。我尝试了几个这样的: Task.objects.all()。order_by(“comments__count”) 但它没有奏效。

你能帮我吗?

回答

2

你需要Annotation

from django.db.models import Count 

Task.objects.all().annotate(num_comments=Count('taskcomment')).order_by('-num_comments') 
+0

谢谢!它现在像一种魅力。 – Sywesk 2012-04-25 14:50:44

+0

不客气。 ) – 2012-04-25 15:39:38

相关问题