【问题标题】:Django: Display a model and a count of how often another model uses itDjango:显示一个模型并计算另一个模型使用它的频率
【发布时间】:2011-02-06 22:14:20
【问题描述】:

我正在创建一个按任务状态对任务进行分类的 TODO 列表。 IE:等待,今天,明天,预定。我的模型看起来像:

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()

上面会给我我的清单,但我不知道如何获得任务的数量。我想我必须反过来工作,拉出一个任务列表并按我的状态模型对它们进行分组,但我不知道如何做到这一点。

【问题讨论】:

    标签: python django django-orm


    【解决方案1】:

    Django 的aggregation features 可以很简单地做到这一点。

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

    现在statuses 中的每个项目都有一个属性task__count,即与该状态相关的任务数。

    【讨论】:

    • 这正是我没有做到的,我会尽快接受它,但让我问最后一次跟进。如果我想按仅存在于 Task 模型中的用户进行过滤怎么办?
    • 我链接到的页面应该包含有关将过滤与聚合相结合的所有相关信息。如果您还有其他具体问题,请提出新问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多