Django 未引用排名高于子查询/参数的原始查询 我的目标
我需要将PostgreSQL的秩窗口函数应用于Django的ORM中带注释的查询集。Django的sql查询必须是子查询才能应用窗口函数,这就是我目前正在做的: queryset=Item.objects.Annotation… queryset_,_排名=Items.objects.raw 选择按点数排序* 从%subquerys,{'subquery':queryset.query} 问题 遗憾的是,queryset.query返回的查询没有正确引用用于注释的参数,尽管查询本身执行得非常好 返回的查询示例 queryset_与_rank.query或queryset.query返回的查询返回以下内容Django 未引用排名高于子查询/参数的原始查询 我的目标,django,django-orm,Django,Django Orm,我需要将PostgreSQL的秩窗口函数应用于Django的ORM中带注释的查询集。Django的sql查询必须是子查询才能应用窗口函数,这就是我目前正在做的: queryset=Item.objects.Annotation… queryset_,_排名=Items.objects.raw 选择按点数排序* 从%subquerys,{'subquery':queryset.query} 问题 遗憾的是,queryset.query返回的查询没有正确引用用于注释的参数,尽管查询本身执行得非常好
"participation"."category" = )
"participation"."category" = amateur)
这是我很期待的
"participation"."category" = '')
"participation"."category" = 'amateur')
问题
我注意到Django文档说明了以下关于查询的内容__
参数值不一定要正确引用,因为这是由数据库接口在执行时完成的
只要我手动修改报价并将其传递给Postgres本人,一切都会按预期进行。有没有一种方法可以接收带有正确报价的所需子查询?或者有没有其他更好的方法将窗口函数应用于Django ORM queryset altoghether 作为Django核心开发人员,无法事先获得数据库后端执行的确切查询
我仍然按照我希望的方式构建了查询,尽管有点麻烦:
分别获取查询和参数
query,params=item_queryset.query.sql_和_params
在字符串周围加上引号。我猜这是什么
数据库适配器也可以。
参数=[
'\'{}\.formatp
如果isinstancep,则基串else p
参数中的p
]
将参数列表强制转换为元组,因为我
否则没有足够的格式字符。不知道为什么。
参数=元组参数
参与者=Item.objects.raw
选择*,
按点按顺序排列描述为秩
来自{subquery}
.formatsubquery=query.formatparams,[]
作为Django核心开发人员,无法事先获得数据库后端执行的确切查询
我仍然按照我希望的方式构建了查询,尽管有点麻烦:
分别获取查询和参数
query,params=item_queryset.query.sql_和_params
在字符串周围加上引号。我猜这是什么
数据库适配器也可以。
参数=[
'\'{}\.formatp
如果isinstancep,则基串else p
参数中的p
]
将参数列表强制转换为元组,因为我
否则没有足够的格式字符。不知道为什么。
参数=元组参数
参与者=Item.objects.raw
选择*,
按点按顺序排列描述为秩
来自{subquery}
.formatsubquery=query.formatparams,[]
这可能有助于*子查询上basedo类中的自定义模板这可能有助于*子查询上basedo类中的自定义模板