【发布时间】:2012-10-23 22:05:11
【问题描述】:
我有一个由 (id, rank) 对组成的字典。我想对 id 执行 Django 查询,以便结果查询集按排名(降序)排序。
获取查询集很简单:
rankings = {...}
result = MyModel.objects.filter(id__in=rankings.keys())
似乎答案应该涉及某种注释,我可以将其用作 order_by 的一部分,但我不知道如何到达那里。
编辑:我没有提到我需要将结果作为一个 QuerySet,因为这是一个美味的 API 管道的一部分。
【问题讨论】:
-
我认为你做不到。将这些值存储在字段中怎么样?
-
每次查询的排名都会发生变化。该应用程序正在查看一组学校,并根据表达的偏好为用户对它们进行排名。
-
我的建议是你添加一个表来存储排名,然后进行连接。这将允许您基于连接表/字段的值执行
MyModel.objects.order_by(...)之类的操作。