找了很久,到目前为止什么也没找到。
在我的django应用程序中,我的用户使用非常标准的评级模型对Model_X进行评级。我有一个处理大量数据的独立函数,当给定一个user实例时,它会返回一个元组列表。第一个值对应于Model_X实例的主键,第二个值是预测评级。例如,它可能返回以下元组列表。
[(1L, 5.25), (5L, 3.1), (23L, 1.83)]
我需要返回一个Model_X的QuerySet (它需要是一个QuerySet),它只包含元组中列出的实例,并按这些元组中的预测评级排序。
发布于 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子句,例如(未测试),
Model_X.objects.raw('select * from myapp_model_x where id in (5,1,23) order by field(id,5,1,23)'])
发布于 2011-04-29 20:36:35
使用列表而不是QuerySet。您可以使用in_bulk轻松地构建它
https://stackoverflow.com/questions/5827665
复制相似问题