目标:使用RowNumber函数获取每一行的编号,然后按值过滤,但保留不应用过滤器时给定的适当RowNumber,否则RowNumber始终返回1。
在转换为Django ORM之前,我发现它有助于获取SQL语法,即:
SELECT rn.row_number, name
FROM ( SELECT ROW_NUMBER() OVER (ORDER BY name), name
FROM customer ) as rn
WHERE name = 'Juan'
问题我无法将其翻译为Django ORM。我尝试了以下方法:
subq = models.Customer.objects.all().annotate(
rank=Window(
expression=RowNumber(),
order_by=(F('name'))
)
)
在这里,我不知道如何继续。如何告诉我的 models.Customer 在其查询中使用 subq 作为 FROM ?