Cod*_*ice 10 python django django-models django-queryset window-functions
我有以下模型:
class Foobar(models.Model):
foo = models.IntegerField()
Run Code Online (Sandbox Code Playgroud)
我弄清楚了如何foo使用窗口函数计算连续字段的增量:
qs = Foobar.objects.annotate(
delta=F('foo') - Window(
Lag('foo'),
partition_by=F('variant'),
order_by=F('timestamp').asc(),
)
)
Run Code Online (Sandbox Code Playgroud)
现在我只想要来自负数的记录delta:
qs.filter(delta__lte=0)
Run Code Online (Sandbox Code Playgroud)
但正如您所料,这会产生错误:
django.db.utils.NotSupportedError: Window is disallowed in the filter clause.
Run Code Online (Sandbox Code Playgroud)
我如何使用 Django ORM 进行此过滤?