在Django 2.0中,我正在尝试按日期排序所有对象的查询集。然后按参数进行过滤,但随后我也想使用Window(或其他方法)对过滤后的查询集进行注释,并在过滤器之前设置查询集之间的间隔。我知道这听起来很奇怪,我只是不知道如何更好地解释它。我将尝试在下面可视化。
我有一个表演班:
class Show(models.Model):
date = models.DateField()
name = models.CharField()
这是我到目前为止的代码:
def name_filter(self, in_name)
Show.objects.all().order_by('date').filter(name=in_name)
.annotate(show_gap=Window(expression=CumeDist()))
所以基本上我想做的是找到过滤结果之间的显示次数(差距)。因此,例如,如果数据如下所示。
date name
01/01/14 alpha
10/10/13 bravo
05/05/12 charlie
06/06/11 alpha
04/04/10 delta
我会打电话给
name_filter('alpha')
然后我将返回一个带有show_gap注释的alpha对象的查询集,这将使我知道它们之间存在3个show间隙。因此,最终结果将如下所示,两个alpha之间存在间隙。第二个结果是显示间隙1,因为它与数据的开头有关。
date name show_gap
01/01/14 alpha 3
06/06/11 alpha 1