问题:
我正在尝试添加一个初始过滤器,它为其他过滤器提供基本查询集以进一步过滤。
我尝试过的事情:
qs
属性方法,但覆盖 qs
会使其他过滤器无法正常工作。__init__
方法,但未在我的自定义过滤器类中调用它。答案 0 :(得分:0)
您可以尝试覆盖自定义 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
答案 1 :(得分:0)
FilterSet 将查询集作为参数,因此您可以过滤自己的查询集,然后将其传入:
queryset = MyModel.objects.filter(...)
my_filters = MyFilterSetClass(queryset=queryset)
如果您使用的是 FilterView,则只需设置视图查询集(或使用 get_queryset()):
class MyFilterView(FilterView):
filterset_class = MyFilterSetClass
queryset = MyModel.objects.filter(...)