首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >还有另一个QuerySet定制排序问题

还有另一个QuerySet定制排序问题
EN

Stack Overflow用户
提问于 2011-04-29 11:56:23
回答 2查看 144关注 0票数 0

找了很久,到目前为止什么也没找到。

在我的django应用程序中,我的用户使用非常标准的评级模型对Model_X进行评级。我有一个处理大量数据的独立函数,当给定一个user实例时,它会返回一个元组列表。第一个值对应于Model_X实例的主键,第二个值是预测评级。例如,它可能返回以下元组列表。

代码语言:javascript
运行
复制
[(1L, 5.25), (5L, 3.1), (23L, 1.83)]

我需要返回一个Model_X的QuerySet (它需要是一个QuerySet),它只包含元组中列出的实例,并按这些元组中的预测评级排序。

EN

回答 2

Stack Overflow用户

发布于 2011-04-30 02:45:24

如果您的评分元组列表已经排序,则可以使用Ordering by the order of values in a SQL IN() clause中的内容。

如果您使用的是MySQL,那么field()函数应该可以为您工作。从您排序的评级元组中提取所有ids,[x[0] for x in sorted_tuples],然后使用该ids列表来构建where子句,例如(未测试),

代码语言:javascript
运行
复制
Model_X.objects.raw('select * from myapp_model_x where id in (5,1,23) order by field(id,5,1,23)']) 
票数 1
EN

Stack Overflow用户

发布于 2011-04-29 20:36:35

使用列表而不是QuerySet。您可以使用in_bulk轻松地构建它

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5827665

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档