首页 > 解决方案 > Django ORM - 在 FROM 子句中使用子查询

问题描述

目标:使用 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 ?

标签: djangodjango-orm

解决方案


推荐阅读