如何按字典中的值对模型进行排序?

时间:2009-11-16 16:32:40

标签: python django sorting sql-order-by

在Django中,我有一个模型,我将有一个字典,其中该模型中的对象的id为键,权重为值。我想在order_by中使用这些权重:

MyModel.objects.filter(title__icontains=query).order_by( 'value_from_the_dictionary' )

如何使这项工作?

我不能将权重放在模型中,因为它们在每次调用此视图时都会有所不同,我不想将它们保存在任何地方,它们将在URL的每个查询中计算。

1 个答案:

答案 0 :(得分:5)

order_by中的排序由数据库完成,因此如果这些元素不在数据库中,则无法按顺序排序。您必须获取查询集,然后在Python中进行排序。

qs = MyModel.objects.filter(title__icontains=query)
qs.sort(key=lambda x: mydict[x])