You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django中如何统计每个Cliente对应的Pendente任务数并获取关联客户信息

解决方案

首先从Cliente模型发起查询会更符合你的需求逻辑,本质是为每个客户关联统计待办任务数,操作步骤如下:

1. 视图层修改查询语句

首先确保你已经引入Django的聚合函数:

from django.db.models import Count

将原有的查询替换为以下代码,完全匹配你给出的SQL逻辑,同时能获取客户的全部所需字段:

# 该语句会生成左连接查询,统计每个客户对应的待办任务数,无待办的客户任务数会显示为0
resultado = Cliente.objects.annotate(
    tarefas=Count('pendente')
).values('id', 'nome', 'localidade', 'tarefas')

如果你需要和你写的原始SQL完全一致(仅统计有至少1条待办任务的客户,同时包含未绑定客户的待办统计),可以使用以下语句:

resultado = Pendente.objects.values(
    'cliente__id', 'cliente__nome', 'cliente__localidade'
).order_by('cliente').annotate(
    tarefas=Count('id')
)

2. 模板层修改渲染代码

如果使用第一种从Cliente发起的查询,模板代码修改为:

<ul>
  {% for obj in resultado %}
  <li>{{ obj.id }} | {{ obj.nome }} | {{ obj.localidade }} : {{ obj.tarefas }}</li>
  {% endfor %}
</ul>

如果使用第二种从Pendente发起的查询,模板代码对应修改为:

<ul>
  {% for obj in resultado %}
  <li>{{ obj.cliente__id }} | {{ obj.cliente__nome }} | {{ obj.cliente__localidade }} : {{ obj.tarefas }}</li>
  {% endfor %}
</ul>

内容的提问来源于stack exchange,提问作者vitorfortes

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 04:54:04