filterset_fields与DjangoFilterBackend不工作

oxosxuxt  于 12个月前  发布在  Go
关注(0)|答案(2)|浏览(111)

我的班级:

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

字符串
我搜索了其他的堆栈溢出问题,它们对我没有帮助(herehereherehere)。
我已经将'django-filter'(django-filter==1.0.4)添加到我的应用程序中,我的django版本是(Django==1.11.1)和rest(djangorestframework==3.8.2)
我真的不想添加一个filter_class。我有其他的视图与filterclass,它的工作,但我不想使这么多的filterclasses。这将是完美的,filterset_fields功能工作。如果没有,我将不得不创建一个函数的filter_class,所以我将不必创建30+他们。

2nbm6dog

2nbm6dog1#

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

dfty9e19

dfty9e192#

您使用DjangoFilterBackend的方式不正确,如果您已经在views.py中全局声明了DjangoFilterBackendsettings.py文件中声明DjangoFilterBackend

filter_backends = (django_filters.rest_framework.DjangoFilterBackend,)

字符串
像这样使用DjangoFilterBackend

from django_filters.rest_framework import DjangoFilterBackend

filter_backends = (django_filters.rest_framework.DjangoFilterBackend,)

相关问题