带有 DjangoFilterBackend 的 filterset_fields 不起作用

Shi*_*ado 7 django django-filter

我的课:

class InvoicePeriodViewSet(viewsets.ModelViewSet):
    permission_classes = (
        permissions.AllowAny,
    )
    queryset = models.InvoicePeriod.objects.all()
    serializer_class = serializers.InvoicePeriodSerializer
    filter_backends = (django_filters.rest_framework.DjangoFilterBackend,)
    filterset_fields = ('days_interval', )
Run Code Online (Sandbox Code Playgroud)

它根本不起作用。我搜索了其他堆栈溢出问题,但它们没有帮助我(此处此处此处此处)。

我的应用程序中添加了“django-filter”(django-filter==1.0.4),我的django版本是(Django==1.11.1)和rest(djangorestframework==3.8.2)

我真的不想添加filter_class。我有过滤器类的其他视图,它正在工作,但我不想制作这么多过滤器类。如果filterset_fields功能有效,那就太完美了。如果不是,我将不得不通过一个函数创建 filter_class,这样我就不必创建 30+ 个。

Shi*_*ado 6

好吧,最后我发现了这个问题,这要归功于validname 的回答。他建议使用“ filter_fields ”我进入了django-filter 文档,发现在新版本(1.1.0)中filter_fields被重命名为filterset_fields,所以当我使用 django-filter 1.0.4 时filterset_fields不存在。