【发布时间】:2020-05-05 20:40:03
【问题描述】:
假设我有以下模型。给定的Job 可以运行多天,有多个用户,并且这些用户可以设置各种标志(模型中的布尔值):
class Job(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
name = models.CharField(max_length=128)
class JobEmployee(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
date = models.DateField()
job = models.ForeignKey(Job, on_delete=models.CASCADE)
user = models.ForeignKey(User, on_delete=models.CASCADE)
is_sup = models.BooleanField()
is_mgr = models.BooleanField()
timecard_complete = models.BooelanField()
我想要做的是在每个工作的日期拉一份工作 ID、姓名、日期和所有孩子的数量列表,is_mgr==True、is_sup==True 和 timecard_complete==False 的孩子在每个工作的日期。所以结果看起来像:
Job ID | Job Name | Date | all_users | mgr | sup | missing_tc
--------------------------------------------------------------------------------------
978294d8-3ae8-11ea-b77f-2e728ce88125 | Job 1 | 2020-01-05 | 8 | 2 | 0 | 4
978294d8-3ae8-11ea-b77f-2e728ce88125 | Job 1 | 2020-01-06 | 6 | 0 | 1 | 3
f5e87902-3ae8-11ea-b77f-2e728ce88125 | Job 2 | 2020-01-05 | 10 | 1 | 3 | 7
f5e87902-3ae8-11ea-b77f-2e728ce88125 | Job 2 | 2020-01-06 | 5 | 0 | 1 | 0
如何使用 django 查询来完成?
编辑:编辑以引入工作名称,因为我意识到我可以只对 JobEmployee 表进行正常的聚合查询,但我也需要来自工作对象的数据。
【问题讨论】: