Django - 模拟管理界面的搜索/过滤

时间:2011-10-14 08:12:25

标签: django admin

我有一个简单的Django视图,显示一个对象列表。我希望用户能够搜索/过滤/排序等对象列表。管理界面默认执行它的方式(所有这些都启用了)正是我正在寻找的。

有没有简单的方法在Django中这样做?或者是否有一些第三方插件可以帮我吗?或者我是不是手动编写所有代码?

我觉得这是许多其他人之前必须面对的问题,那么最简单(也是最不冗余)的方法是什么?

1 个答案:

答案 0 :(得分:0)

您可以通过Javascript对对象进行排序,也可以在服务器上对对象进行排序。

javascript是有限制的,因为在大量对象被分页的情况下,您只能对当前页面上的内容进行排序。

最简单的方法是在服务器端对记录进行排序,并允许用户通过GET参数选择排序;

之类的东西
http://mydomain.com/path/to/view/?sort=asc

然后在你看来(这非常粗糙,不应该是你如何实现它):

def myview(request):
    ...
    # Check if the user has provided a 'sort' parameter, and check what it is
    if request.GET.get("sort", None) is "asc":
        results = SomeModel.objects.get(...).order_by("-name")
    ...

您可以将相同的逻辑应用于过滤,尽管(在我看来),如果您要更改实际的查询集(返回的对象),过滤应该通过URL实现,而不是通过GET参数实现(只影响返回结果的顺序)