如何通过外部值对Django QuerySet进行排序?

我有一个由(id,rank)对组成的词典.我想对id执行Django查询,以便生成的查询集按rank(降序)排序.

获取查询集很简单:

rankings = {...}
result = MyModel.objects.filter(id__in=rankings.keys())

似乎答案应该涉及某种注释,我可以将其用作order_by的一部分,但我无法弄清楚如何到达那里.

编辑:我忽略了提到我需要将结果作为QuerySet,因为这是tastypie API管道的一部分.

最佳答案 像这样的东西?

rankings = { 1 : 2, 2: 1, ... } # i.e. { 'id' : 'ranking', ... }
objects = list(MyModel.objects.filter(id__in=rankings.keys()))
objects.sort(key=lambda obj: rankings[obj.id])
点赞