【发布时间】:2021-05-19 00:10:35
【问题描述】:
问题:
我正在尝试添加一个初始过滤器,它为其他过滤器提供基本查询集以进一步过滤。
我尝试过的事情:
- 我尝试覆盖
qs属性方法,但覆盖qs使其他过滤器无法正常工作。 - 我还尝试覆盖
__init__方法,但在我的自定义过滤器类中没有调用它。
【问题讨论】:
-
也分享你的代码
标签: python django filter overriding django-filter
问题:
我正在尝试添加一个初始过滤器,它为其他过滤器提供基本查询集以进一步过滤。
我尝试过的事情:
qs 属性方法,但覆盖 qs 使其他过滤器无法正常工作。__init__ 方法,但在我的自定义过滤器类中没有调用它。【问题讨论】:
标签: python django filter overriding django-filter
您可以尝试覆盖自定义 FilterSet 类的 init 方法:
def __init__(self, *args, **kwargs):
super(YourCustomFilter, self).__init__(*args, **kwargs)
self.form.initial['your_field'] = "default_value"
不要忘记在你的 View 类中提到这一点:
filter_backends = [DjangoFilterBackend]
filterset_class = YourCustomFilter
【讨论】:
FilterSet 将查询集作为参数,因此您可以过滤自己的查询集,然后将其传入:
queryset = MyModel.objects.filter(...)
my_filters = MyFilterSetClass(queryset=queryset)
如果您使用的是FilterView,您可以只设置视图查询集(或使用get_queryset()):
class MyFilterView(FilterView):
filterset_class = MyFilterSetClass
queryset = MyModel.objects.filter(...)
【讨论】: