我的班级:
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 多个过滤器类。
好吧,由于validname的回答,我终于找到了问题。他建议使用“filter_fields”我进入了django-filter文档并发现在新版本(1.1.0)中filter_fields被重命名为filterset_fields,所以我使用的是django-filter 1.0.4 filterset_fields 不存在。
您以错误的方式使用 DjangoFilterBackend
filter_backends = (django_filters.rest_framework.DjangoFilterBackend,)
像这样使用 DjangoFilterBackend
from django_filters.rest_framework import DjangoFilterBackend
filter_backends = (django_filters.rest_framework.DjangoFilterBackend,)