【发布时间】:2021-09-19 16:53:50
【问题描述】:
我想了解每个“客户”(Cliente) 的“任务”(Pendentes) 数量
我的 models.py 中有这个模型:
class Cliente(models.Model):
id = models.IntegerField(primary_key=True)
nome = models.CharField(max_length=200, help_text="Nome")
localidade = models.CharField(max_length=100, help_text="Localidade")
[...]
class Pendente(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, help_text="ID Unico")
cliente = models.ForeignKey('Cliente', on_delete=models.RESTRICT, blank=True, null=True)
memo = models.TextField(null=True, blank=True, help_text="Memória Descritiva", max_length=200)
criado = models.DateField(default=date.today, null=True, blank=True, help_text="Data registo ")
concluir = models.DateField(null=True, blank=True, help_text="Data de execução máxima ")
tecnico = models.ForeignKey(User, on_delete=models.SET_NULL, null=True, blank=True)
tecnicoatribuido = models.ForeignKey('TecnicoAtribuido', on_delete=models.SET_NULL, blank=True, null=True)
基本上我想运行这个sql:
"select A.id, A.nome, A.localidade, count(B.id) as tarefas
from todolist_pendente B
LEFT JOIN todolist_cliente A
ON A.id = B.cliente_id
GROUP by A.id;"
似乎无法弄清楚它如何在视图上工作。
我可以通过以下方式获得每个客户的计数:
resultado = Pendente.objects.values('cliente').order_by('cliente').annotate(count=Count('id'))
但这不会在模板上呈现每个客户的姓名。
在我正在使用的模板上:
<ul>
{% for obj in resultado %}
<li>{{ obj.cliente}} : {{ obj.count}}</li>
{% endfor %}
</ul>
这是渲染:
6 : 2
35 : 1
40 : 1
92 : 1
106 : 1
105 : 1
有没有办法获取外键值'nome',以便它可以像这样呈现:
id Nome Localidade Tarefas
6 Cliente A Quarteira 2
35 Cliente B Lisboa 1
40 Cliente C Barreiro 1
92 Cliente D Lisboa 1
105 Cliente E Faro 1
106 Cliente F Barreiro 1
我们将不胜感激...
【问题讨论】:
标签: django django-views