繁体   English   中英

Django - 如何在同一字典中获取 model 中 select 字段的计数

[英]Django - How to get count for select fields in model within same dictionary

我目前正在从事数据分析工作,并且正在努力以所需的格式对数据进行分组。

这是我的models.py

class CustomerInformation(models.Model):

    status = (
        ('lead', 'Lead'),
        ('client', 'Client'),
    )

    customer_name = models.CharField(max_length=100)
    status = models.CharField(max_length=100, choices=status, default='lead')
    creator = models.ForeignKey('UserProfile', related_name='customers', on_delete=models.CASCADE, null=True, blank=True)
    created_date = models.DateField(default=timezone.now)

假设这个 model 有 5 个实例,即:

1) customer_name: '-', status: 'lead', creator: 'User 1', created_date: '23 May 20'
2) customer_name: '-', status: 'lead', creator: 'User 1', created_date: '21 May 20'
3) customer_name: '-', status: 'lead', creator: 'User 2', created_date: '08 May 20'
4) customer_name: '-', status: 'client', creator: 'User 2', created_date: '16 May 20'
5) customer_name: '-', status: 'client', creator: 'User 2', created_date: '04 April 20'

我试图让数据采用这种格式:

{ April: [{ creator: 'User 2', lead_count: 0, client_count: 1}],
  May: [{ creator: 'User 1', lead_count: 2, client_count: 0},
         { creator: 'User 2', lead_count: 1, client_count: 1}]
}

基本上,我希望能够计算每个用户每月从状态字段中选择值(潜在客户或客户)的次数。 我尝试使用注释,但它返回了单独字典中的计数(1 个字典用于潜在客户计数,另一个用于客户计数),但如果可能的话,我希望它们采用上述格式。 我想过使用键分配将第二个字典的计数分配给第一个字典,但对我来说似乎太乱了,所以我希望 Django 具有使用查询和注释将其格式化为上述格式的功能。 最终,我将组织数据并通过序列化程序发送数据,然后通过 Django Rest 框架发送出去。 欢迎所有帮助,并提前感谢您,请告诉我该怎么做,因为我是 Django 新手!

对于分组计数,您可以使用它:

CustomerInformation.objects.annotate(lead_count=Count('status',filter=Q(status="lead"))).annotate(client_count=Count('status',filter=Q(status="client")))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM