2012-04-22 41 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

相關問題