我想在 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)