我有以下型号:
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来做这个过滤?
1条答案
按热度按时间t5zmwmid1#
Django 4.2支持对WINDOW表达式进行过滤。请参阅发行说明和the pull request。