Django中窗口函数的过滤

6jjcrrmo  于 2023-03-04  发布在  Go
关注(0)|答案(1)|浏览(113)

我有以下型号:

class Foobar(models.Model):
    foo = models.IntegerField()

我还想出了如何使用窗口函数计算连续foo场的增量:

qs = Foobar.objects.annotate(
    delta=F('foo') - Window(
        Lag('foo'),
        partition_by=F('variant'),
        order_by=F('timestamp').asc(),
    )
)

现在我只需要delta为负的记录:

qs.filter(delta__lte=0)

但正如您所料,这会产生一个错误:

django.db.utils.NotSupportedError: Window is disallowed in the filter clause.

我怎样用Django ORM来做这个过滤?

t5zmwmid

t5zmwmid1#

Django 4.2支持对WINDOW表达式进行过滤。请参阅发行说明和the pull request

相关问题