这似乎是一种非常普遍的情况,所以我真的希望有人可以快速回答我。
考虑我每个站点有多个站点和多个公司的情况,我正在为此收集潜在客户。所以我有一个排行榜,每个记录都有以下字段: date , site ,公司(一个潜在客户可以去多家公司), 用户,评论。现在我需要生成一个摘要,给出每个公司在每个日期每个日期获得的潜在客户总数。
所以基本上我需要一个查询,它会给我每个站点上每个公司的总行数。这甚至可以在一个查询中完成吗?
或者,我们可以轻松遍历网站,在这种情况下,我们只需要计算特定网站所属的每个公司的行数。
欣赏任何想法。这是一个可以使用的示例模型:
class Lead(models.Model):
date = models.DateTimeField(auto_now_add=True)
site = models.ForeignKey(Site)
companies = models.ManyToManyField(Company)
user = models.ForeignKey(User)
comment = models.TextField()
答案 0 :(得分:3)
所以我一直在努力解决这个问题,我相信我已经提出了一个解决方案,可以产生我之后的结果。鉴于上述模型,我使用以下内容:
Lead.objects.values('site', 'companies').annotate(Count('id'))
这会产生一个词典列表,每个唯一站点/公司组合一个词典,每个词典包含一个 id__count 键,其中包含该站点和公司特定组合的总行数。如果一个主管有多个与之关联的公司,则会为每个公司生成一个单独的字典。
在我们的实际模型中,我们还有不同类型的潜在客户以及其他字段 type 。因此,如果我也想考虑这一点,我只需在模型中添加类型字段并使用以下内容:
Lead.objects.values('site', 'companies', 'type').annotate(Count('id'))
使用这个,我会为每个公司的每个网站获得一个字典,每个公司都有自己的计数。 Django非常聪明!
无论如何,基本的问题我确定,但我找不到任何解决它的问题。希望这有助于某人。
答案 1 :(得分:2)