Django ORM - 在 FROM 子句中使用子查询

Dal*_*tor 5 django django-orm

目标:使用 RowNumber 函数获取每行的编号,然后按值进行过滤,但保留不应用过滤器时给出的相应 RowNumber,否则 RowNumber 将始终返回 1。

\n\n

在转换为 Django ORM 之前,我发现获取 SQL 语法很有帮助,如下所示:

\n\n
SELECT rn.row_number, name \nFROM ( SELECT ROW_NUMBER() OVER (ORDER BY name), name\n       FROM customer ) as rn\nWHERE name = 'Juan' \n
Run Code Online (Sandbox Code Playgroud)\n\n

问题我可以\xc2\xb4t 设法将其转换为 Django ORM。我已经尝试过以下方法:

\n\n
subq = models.Customer.objects.all().annotate(\n            rank=Window(\n                expression=RowNumber(),\n                order_by=(F('name'))\n            )\n           )\n
Run Code Online (Sandbox Code Playgroud)\n\n

Here\xc2\xb4s 我不\xc2\xb4t 不知道如何继续。如何告诉我的models.Customer在其查询中使用subq作为FROM

\n