很多搜索,到目前为止一无所获。
在我的django应用中,我的用户使用非常标准的评级模型对Model_X进行评级。我有一个处理大量数据的独立函数,当给定用户实例时,返回一个元组列表。第一个值对应于Model_X实例的主键,第二个值是预测评级。例如,它可能会返回以下元组列表。
[(1L, 5.25), (5L, 3.1), (23L, 1.83)]
我需要返回Model_X的QuerySet(它需要是一个QuerySet),只包含元组中列出的实例,按元组中这些预测的等级排序。
答案 0 :(得分:1)
如果已经订购了评级元组列表,您可以使用Ordering by the order of values in a SQL IN() clause中的内容。
如果你正在使用MySQL,那么field()
功能应该适合你。从排序的评级元组[x[0] for x in sorted_tuples]
中拉出所有ID,然后使用该ID列表构建where子句,例如: (未经测试),
Model_X.objects.raw('select * from myapp_model_x where id in (5,1,23) order by field(id,5,1,23)'])
答案 1 :(得分:0)
使用列表而不是QuerySet。您可以使用in_bulk
轻松构建它