如何在django中实现排序和过滤?

时间:2018-01-28 10:53:57

标签: python django django-models django-views

我是django的新手,我正在开展一个项目,我需要让用户按品牌或制造商对列出的结果进行排序或过滤,并使用价格排序(从最高到最低,反之亦然我应该怎样解决这个问题?

2 个答案:

答案 0 :(得分:0)

你可以这样做:

query = Goods.objects
  sort_by = request.GET.pop('sort_by', 'id')  
  for k, v in request.GET.items():
       query.filter(k=v)
  result = query.order_by(sort_by)

答案 1 :(得分:0)

在ListView类中,您可以覆盖get queryset的功能,如果您传递逻辑,则可以使用这些参数覆盖查询。例如::

class ExampleListView(ListView):
    model = example

    def get_queryset(self):
      queryset = Goods.objects.all()
      if self.request.GET.get("manufacturer"):
        selection = self.request.GET.get("browse")
        queryset = Goods.objects.filter(manufacturer = selection)
      return queryset

或者您可以使用类似this的开箱即用解决方案来过滤django上的需求,并且可以通过定义过滤器视图从模型字段中添加过滤器。