0

我正在列出查询集结果,并想添加一个选项来选择显示的订单结果。

我想将数据库中的实际数据传递到其他页面进行排序。我能够通过获取所有对象 id 并使用 django session 根据订单条件重新创建一个新的查询集来实现这样的事情。

我在想是否有其他方法可以实现这样的目标?

10倍

4

2 回答 2

1

假设您当前正在将数据显示为表格,您可以给一些 javascript 客户端表格排序器(例如tablesorter )提供机会。有很多 javascript 表格排序。

于 2012-11-30T20:38:53.243 回答
0

我现在离开我的开发机器,但我认为你可以将 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 函数对其进行排序,就像这里一样。

于 2012-11-30T20:11:08.923 回答