2009-11-16 126 views
0

在Django中,我有一个模型,并且我将有一个字典,其中包含该模型中的对象的id作为键,并将权重作为值。我想在order_by中使用这些权重:如何使用字典中的值对模型进行排序?

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

如何使此工作?

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

回答

5

排序在order_by由数据库完成,所以如果这些元素不在数据库中,您不能通过它们进行排序。你必须得到查询集,然后在Python中进行排序。

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

+1为了简化和大量使用lambda :) – Bartek 2009-11-16 16:40:55

相关问题