Python 如何使用Django';当3行或更多行被分组时,是否仅返回一组行?

Python 如何使用Django';当3行或更多行被分组时,是否仅返回一组行?,python,mysql,django,Python,Mysql,Django,鉴于以下模型: class Enquiry(models.Model): enquiryparent = models.ForeignKey('self',default=None, null=True, blank=True) type = models.SmallIntegerField() name = models.CharField(max_length=200) mobile = models.CharField(max_length=40,blank

鉴于以下模型:

class Enquiry(models.Model):
    enquiryparent = models.ForeignKey('self',default=None, null=True, blank=True)
    type = models.SmallIntegerField()
    name = models.CharField(max_length=200)
    mobile = models.CharField(max_length=40,blank=True,null=True)
    email = models.EmailField(blank=True,null=True)
    message = models.TextField(blank=True,null=True)
    registered = models.DateTimeField(auto_now_add=True)
如何在Django中编写以下查询:

计算特定类型,例如“x”,其中移动设备在三天内(使用注册日期)是唯一的,用于整个集合

例如:

id, type, mobile, registered
1, 2, 988, 01/11/2011
1, 2, 988, 02/11/2011
1, 2, 988, 03/11/2011
1, 4, 988, 04/11/2011
1, 2, 988, 05/11/2011
1, 2, 988, 06/11/2011
1, 2, 988, 07/11/2011
1, 2, 555, 07/11/2011
结果应该是:

id, type, mobile, registered
1, 2, 988, 03/11/2011
1, 2, 988, 05/11/2011
1, 2, 555, 07/11/2011

Count total=3。

如果我理解正确,这似乎是可行的,但不幸的是,我不熟悉Django的ORM。我认为基本想法可能如下所示:

  • 通过
    id
    id==1
    )选择一个始终等于1的静态整数列,以及一个类似
    sum(static1)
  • type
    筛选(如示例中的
    type==2
  • 按注册的
    排序
  • 分组依据
    mobile
  • sum(static1)
    等于或大于3的过滤器

我知道这在原始SQL中是可能的,但我不知道如何在Django的ORM中实现。您的另一个选择是为循环编写一个,用于累积结果。

您能解释一下“唯一”是什么意思吗?您的示例不够清楚。如果数字在3天内出现多次,则只计算一次。对吗?对于sql来说太复杂了。@Digivampire,#Skirmantas已经正确地解释了它-只是重复一下,如果一个数字在3天内出现不止一次,它应该被计算为一次。