我有一个简单的Django视图,显示一个对象列表。我希望用户能够搜索/过滤/排序等对象列表。管理界面默认执行它的方式(所有这些都启用了)正是我正在寻找的。 p>
有没有简单的方法在Django中这样做?或者是否有一些第三方插件可以帮我吗?或者我是不是手动编写所有代码?
我觉得这是许多其他人之前必须面对的问题,那么最简单(也是最不冗余)的方法是什么?
答案 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参数实现(只影响返回结果的顺序)