gpt4 book ai didi

python - django 将额外的参数传递给filterset_class

转载 作者:行者123 更新时间:2023-11-30 22:56:07 26 4
gpt4 key购买 nike

我正在使用django-filter 。我有过滤器类:

class ProductFilter(django_filters.FilterSet):
def __init__(self, attribute=None, *args, **kwargs):
super(ProductFilter, self).__init__(*args, **kwargs)
#do stuff with attribute

以及我的观点:

from django_filters.views import FilterView
class ProductListView(FilterView):
model = Product
....
filterset_class = ProductFilter

如何将参数传递给 ProductFilter __init__ 函数? filterset_class = ProductFilter(attribute='width') 不起作用。

最佳答案

您可以尝试覆盖 get_filterset_kwargs方法:

class ProductListView(FilterView):
model = Product
...
filterset_class = ProductFilter

def get_filterset_kwargs(self, filterset_class)
kwargs = super(ProductListView, self).get_filterset_kwargs(filterset_class)
kwargs['attribute'] = 'width'
return kwargs

在您的 FilterSet 类中,您可以从 kwargs 中弹出属性:

class ProductFilter(django_filters.FilterSet):
def __init__(self, **kwargs):
attribute = kwargs.pop['attribute']
super(ProductFilter, self).__init__(**kwargs)

或者明确地将其包含在签名中。

class ProductFilter(django_filters.FilterSet):
def __init__(self, attribute=None, **kwargs):
super(ProductFilter, self).__init__(**kwargs)

关于python - django 将额外的参数传递给filterset_class,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37135320/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com