filterset_fields 与 DjangoFilterBackend 不工作

问题描述 投票:0回答:2

我的班级:

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', )

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

我已将“django-filter”(django-filter==1.0.4)添加到我的应用程序中,我的django版本是(Django==1.11.1)和其余版本(djangorestframework==3.8.2)

我真的不想添加filter_class。我对过滤器类有其他看法,它正在工作,但我不想制作这么多过滤器类。如果 filterset_fields 功能能够正常工作那就太完美了。如果没有,我将必须通过函数创建 filter_class,这样我就不必创建 30 多个过滤器类。

django django-filter
2个回答
7
投票

好吧,由于validname的回答,我终于找到了问题。他建议使用“filter_fields”我进入了django-filter文档并发现在新版本(1.1.0)中filter_fields被重命名为filterset_fields,所以我使用的是django-filter 1.0.4 filterset_fields 不存在。


0
投票

您以错误的方式使用 DjangoFilterBackend

filter_backends = (django_filters.rest_framework.DjangoFilterBackend,)

像这样使用 DjangoFilterBackend

from django_filters.rest_framework import DjangoFilterBackend

filter_backends = (django_filters.rest_framework.DjangoFilterBackend,)
© www.soinside.com 2019 - 2024. All rights reserved.