2011-02-06 44 views
0

我正在創建一個TODO列表,按任務的狀態對任務進行分類。 IE:等待,今天,明天,計劃。我的模型看起來像:Django:顯示一個模型和另一個模型使用它的頻率

class Status(models.Model): 
    title = models.CharField(max_length=32) 

class Task(models.Model): 
    user = models.ForeignKey(User) 
    status = models.ForeignKey(Status, default=1) 
    title = models.CharField(max_length=128) 
    notes = models.TextField(blank=True) 
    completed = models.BooleanField() 

我想創建一個顯示所有的狀態(這是簡單)導航列表,但也多少任務被分配給每個計數(即我在哪裏卡住)。

等待(1) 今天(3) 明天(1) 計劃(0)

它需要能夠生產狀態,即使計數爲0。這是一個導航列表,我希望用戶能夠看到他們可以放置任務的位置。

Status.objects.all() 

以上將讓我的名單,但我不知道如何獲得任務的數量。我想我必須反向工作,抽出一份任務清單,並將它們按照我的狀態模型進行分組,但我對如何做到這一點感到茫然。

回答

2

Django的aggregation features可以很簡單地做到這一點。

from django.db.models import Count 
statuses = Status.objects.all().annotate(Count('task')) 

現在statuses每個項目都有一個屬性task__count這是關係到該狀態的任務數量。

+0

這正是我所沒有的,我會盡快接受它,但讓我問最後一次跟進。如果我想過濾僅存在於任務模型中的用戶,該怎麼辦? – TheLizardKing 2011-02-06 22:26:25

相關問題