Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 还有一个QuerySet自定义排序问题_Python_Django_Django Queryset - Fatal编程技术网

Python 还有一个QuerySet自定义排序问题

Python 还有一个QuerySet自定义排序问题,python,django,django-queryset,Python,Django,Django Queryset,搜索了很多次,到目前为止什么也没找到 在我的django应用程序中,我的用户使用非常标准的评分模型对型号X进行评分。我有一个独立的函数,它处理大量数据,当给定一个用户实例时,返回一个元组列表。第一个值对应于模型_X实例的主键,第二个值是预测评级。例如,它可能返回以下元组列表 [(1L, 5.25), (5L, 3.1), (23L, 1.83)] 我需要返回Model_X的查询集(它需要是一个查询集),只包含元组中列出的实例,按元组中这些预测的评分排序。使用列表而不是查询集。您可以使用轻松地构

搜索了很多次,到目前为止什么也没找到

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

[(1L, 5.25), (5L, 3.1), (23L, 1.83)]

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

使用列表而不是查询集。您可以使用

轻松地构建它,如果您的评级元组列表已经排序,您可能可以从中使用一些东西

如果您使用的是MySQL,那么
field()
函数应该适合您。从排序的评级元组中提取所有ID,
[x[0]表示排序的\u元组中的x]
,然后使用该ID列表构建where子句,例如(未测试)


我知道我可以使用python sorted()函数来实现这一点,但我需要它来返回一个查询集,据我所知,这是sorted()函数无法实现的。我不明白你的例子到底代表了什么。来自一个模型及其实例或来自不同模型组合实例的字段值?我重新编写了我的问题,希望能让它更清楚一些。这有用吗?在这个过程中,模型上的字段值根本不起作用。您真的需要返回QuerySet吗?我有一个O(n)解决方案,您使用列表中的值链接查找以保持顺序。。。但希望有人能提供更好的解决方案。我在多个地方都非常明确地指出,我正在寻找一个返回查询集的解决方案。我可能做得不对,但使用您的语法,它会在where语句中的“order by field…”语句中抛出一个错误。啊,这很不幸。您可能必须降到a才能正常运行。你在使用MySQL吗?我将求助于我的替代方案,即使用python的排序和重写我的视图。我不敢相信这是不可能的。这似乎是一个需要解决的重大缺口。
Model_X.objects.raw('select * from myapp_model_x where id in (5,1,23) order by field(id,5,1,23)'])