小编Emm*_*Sys的帖子

在 Django 中使用带有 GROUP BY 子句的 COUNT(DISTINCT field)

问题

我想在 Django 中使用COUNT(DISTINCT field)withGROUP BY子句。据我了解,COUNT(DISTINCT...只能通过使用extra查询集来实现。

我的简化模型是:

class Site(models.Model):
    name = models.CharField(max_length=128, unique=True)

class Application(models.Model):
    name = models.CharField(max_length=64)
    version = models.CharField(max_length=13, db_index=True)

class User(models.Model):
    name = models.CharField(max_length=64) 
    site = models.ForeignKey(Site, db_index=True) 

class Device(models.Model):
    imei = models.CharField(max_length=16, unique=True)

    applications = models.ManyToManyField(Application, null=True, db_index=True, through='ApplicationUsage') 
    user = models.ForeignKey(User, null=True, db_index=True)

class ApplicationUsage(models.Model):
    activity = models.DateField(db_index=True)

    application = models.ForeignKey(Application)
    device = models.ForeignKey(Device)
Run Code Online (Sandbox Code Playgroud)

我的目标是在给定一个时间段内的应用程序活动的情况下,为每个站点创建一个站点对象列表,其中包含不同设备的计数,例如

stats_site.name     deviceCount
ALBI                32
AMPLEPUIS           42
...
Run Code Online (Sandbox Code Playgroud)

我试试这个代码:

stats_site.name     deviceCount
ALBI                32 …
Run Code Online (Sandbox Code Playgroud)

mysql django group-by django-queryset

4
推荐指数
1
解决办法
5171
查看次数

标签 统计

django ×1

django-queryset ×1

group-by ×1

mysql ×1