【发布时间】:2020-06-14 03:39:06
【问题描述】:
在question 之后,我试图获取每个 group_by 标准的前 10 条记录,但 Django 返回此错误:
from django.db.models import F, Window
from django.db.models.functions import RowNumber
Purchases.objects.annotate(row_number=Window(
expression=RowNumber(),
partition_by=F('customer'),
order_by=F('field_of_interest').desc()
)
).filter(row_number=10)
raise NotSupportedError(
django.db.utils.NotSupportedError: Window is disallowed in the filter clause.
当我删除 .desc() 时,错误消息变为:
ValueError: order_by must be either an Expression or a sequence of expressions.
我正在使用 PostgreSql。这是一个错误还是我在查询中的某个地方错了?
【问题讨论】:
-
这有帮助吗? Django 票#30104 Need filtering by Window expression
-
谢谢@StevenRumbalski。有没有其他方法可以获得每个 group_by 值的前 10 条记录?
-
你能看看这个答案stackoverflow.com/a/19924129/7320045吗?这能解决您的问题吗?
标签: python django postgresql