使用 django 过滤器基于上下文数据过滤模型
Filter model based of context data using django filter
我有一个模型的详细视图,我想将其与产品列表一起显示,我正在尝试将 django_filter 集成到该视图中。
错误信息
TypeError at /collections/christmas/?category=mens,
get context data takes exactly 2 arguments (1 given)
过滤器
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=男装.
我在这里具体做错了什么?甚至可以这样做吗?
您的覆盖方法中缺少 *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
我有一个模型的详细视图,我想将其与产品列表一起显示,我正在尝试将 django_filter 集成到该视图中。
错误信息
TypeError at /collections/christmas/?category=mens, get context data takes exactly 2 arguments (1 given)
过滤器
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=男装.
我在这里具体做错了什么?甚至可以这样做吗?
您的覆盖方法中缺少 *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