在Django中,我有一个模型,我将有一个字典,其中该模型中的对象的id为键,权重为值。我想在order_by中使用这些权重:
MyModel.objects.filter(title__icontains=query).order_by( 'value_from_the_dictionary' )
如何使这项工作?
我不能将权重放在模型中,因为它们在每次调用此视图时都会有所不同,我不想将它们保存在任何地方,它们将在URL的每个查询中计算。
答案 0 :(得分:5)
order_by
中的排序由数据库完成,因此如果这些元素不在数据库中,则无法按顺序排序。您必须获取查询集,然后在Python中进行排序。
qs = MyModel.objects.filter(title__icontains=query)
qs.sort(key=lambda x: mydict[x])