Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django-模拟管理界面的搜索/过滤_Django_Admin - Fatal编程技术网

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

Django-模拟管理界面的搜索/过滤,django,admin,Django,Admin,我有一个简单的Django视图,显示对象列表。我希望用户能够搜索/过滤/排序等对象列表。管理界面在默认情况下的工作方式(所有这些都已启用)正是我想要的 在Django有什么简单的方法可以做到这一点吗?或者有没有第三方插件可以帮我?还是我一直在手工编写所有代码 我觉得这是许多其他人以前肯定遇到过的问题,那么最简单(也是最少冗余)的方法是什么呢?您可以通过Javascript对对象进行排序,也可以在服务器上对对象进行排序 javascript是有限制的,因为在大量对象分页的情况下,您只能对当前页面上

我有一个简单的Django视图,显示对象列表。我希望用户能够搜索/过滤/排序等对象列表。管理界面在默认情况下的工作方式(所有这些都已启用)正是我想要的

在Django有什么简单的方法可以做到这一点吗?或者有没有第三方插件可以帮我?还是我一直在手工编写所有代码


我觉得这是许多其他人以前肯定遇到过的问题,那么最简单(也是最少冗余)的方法是什么呢?

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

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

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

http://mydomain.com/path/to/view/?sort=asc
然后在您看来(这是非常粗糙的,不应该是您实现它的方式):

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

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")
    ...