Django模板复杂反向查询计数

时间:2018-10-09 14:43:43

标签: django django-models django-templates

我有这样的模型,其中主管是团队的外键,而个人员工是外键。

model.py

class Supervisor(models.Model):
    [fields..]

class Team(models.Model):
    shift = ...
    department = ...
    supervisor = models.ForeignKey(Supervisor, related_name="team_supervisor")

class Employee(models.Model):
    [fields...]
    team = models.ForeignKey(Team, related_name="employee_team")

在视图中使用Supervisor模型时,在遍历每个主管的同时,我可以用以下语句列出主管管理的团队数量:

{{ supervisor.team_supervisor.count }}

如何显示主管在每个团队中为主管工作的单个员工总数?我以为以下方法会起作用,但不会:

{{ supervisor.team_supervisor.employee_team.count }}

1 个答案:

答案 0 :(得分:0)

您将必须使用Count模块(docs & examples here)中的django.db.models.aggregates修改查询集并对其进行注释。像这样:

from django.db.models import Count
supervisors = Supervisor.objects.annotate(employee_count=Count('team__employee'))