Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.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
Python 如何在django中实现排序和过滤?_Python_Django_Django Models_Django Views - Fatal编程技术网

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

Python 如何在django中实现排序和过滤?,python,django,django-models,django-views,Python,Django,Django Models,Django Views,我是django的新手,我正在从事一个项目,在这个项目中,我需要让用户按品牌或制造商对列出的结果进行排序或筛选,并使用价格进行排序(从最高到最低,反之亦然)。我应该如何处理这个问题?您可以这样做: 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

我是django的新手,我正在从事一个项目,在这个项目中,我需要让用户按品牌或制造商对列出的结果进行排序或筛选,并使用价格进行排序(从最高到最低,反之亦然)。我应该如何处理这个问题?

您可以这样做:

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)

在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

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

您当前如何显示产品列表?我当前使用的是基于类的
ListView
,但我愿意接受任何建议,包括将我的产品显示方式更改为功能视图,我对这两者都很满意。