使用django过滤器基于上下文数据过滤模型

时间:2017-06-30 19:23:30

标签: django django-views django-class-based-views

我有一个模型的详细视图,我想与产品列表一起显示,我试图在这个视图中集成django_filter。

错误消息

  

/ collections / christmas /?category = mens中的TypeError,   获取上下文数据只需要2个参数(给定1个)

过滤

class ProductFilter(django_filters.FilterSet):
    class Meta:
    model = Product
    fields = ['categories']

详细信息视图

class collection_detail(DetailView):
    model = Collection
      def get_context_data(self, request, **kwargs):
       context = super(collection_detail, self).get_context_data(**kwargs)
       context['collection_list'] = ProductFilter(request.GET, queryset=Product.objects.filter(collection=self.object.id).filter(structure='parent'))
       return context

我打算如何工作

类别过滤器是在链接列表中预定义的,因此当用户单击与特定类别相关的集合时,详细信息视图的URL看起来像/ collections / christmas /?category = mens。

我在这里做错了什么?是否有可能做到这一点?

1 个答案:

答案 0 :(得分:1)

您在重写方法中缺少*args

class collection_detail(DetailView):
    model = Collection

    def get_context_data(self, *args, **kwargs):
        context = super(collection_detail, self).get_context_data(*args, **kwargs)
        context['collection_list'] = ProductFilter(self.request.GET, queryset=Product.objects.filter(collection=self.object.id).filter(structure='parent'))
        return context