2011-02-06 68 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

相关问题