我是django的新手,我正在开展一个项目,我需要让用户按品牌或制造商对列出的结果进行排序或过滤,并使用价格排序(从最高到最低,反之亦然我应该怎样解决这个问题?
答案 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上的需求,并且可以通过定义过滤器视图从模型字段中添加过滤器。