我正在列出查询集结果,并想添加一个选项来选择显示的订单结果。
我想将数据库中的实际数据传递到其他页面进行排序。我能够通过获取所有对象 id 并使用 django session 根据订单条件重新创建一个新的查询集来实现这样的事情。
我在想是否有其他方法可以实现这样的目标?
10倍
我正在列出查询集结果,并想添加一个选项来选择显示的订单结果。
我想将数据库中的实际数据传递到其他页面进行排序。我能够通过获取所有对象 id 并使用 django session 根据订单条件重新创建一个新的查询集来实现这样的事情。
我在想是否有其他方法可以实现这样的目标?
10倍
假设您当前正在将数据显示为表格,您可以给一些 javascript 客户端表格排序器(例如tablesorter )提供机会。有很多 javascript 表格排序。
我现在离开我的开发机器,但我认为你可以将 id 列表传递给一个新的 Queryset,pk__in=list_of_object_ids
然后使用本机order_by
函数。
例如:
objs = Object.objects.filter(pk__in=list_of_object_ids).order_by('value_to_order_by')
无论如何,这就是我首先要尝试的方法,尽管我确信会有更好的优化。
例如,您可以传递带有键值对的字典,而不是对象 ID 列表,该键值对具有您想要排序的值。
例如:
[{'obj_id':1,'obj_value':'foo'},{'obj_id':2,'obj_value':'foo'}]
然后使用一些 lambda 函数对其进行排序,就像这里一样。