ImportError: cannot import name 'DjangoFilterBackend'

ImportError: cannot import name 'DjangoFilterBackend'

升级到 Django REST framework 3.7 后出现以下错误

  File "/home/jpg/Projects/django2x/sample/views.py", line 24, in <module>
    from rest_framework.filters import DjangoFilterBackend
ImportError: cannot import name 'DjangoFilterBackend'

这是我的观点

from rest_framework.filters import DjangoFilterBackend
from rest_framework import viewsets


class FooViewSet(viewsets.ModelViewSet):
    queryset = Foo.objects.all()
    serializer_class = Foo_Serializer
    filter_backends = (DjangoFilterBackend,)
    filter_fields = ('foo_bar', 'bar_foo')

rest_framework.filters.DjangoFilterBackendDRF : 3.7.

So from DRF 3.7 onwards you should install django-filter 包中被描述为在视图中使用 DjangoFilterBackend .


您可以将 < DRF 3.6 样式过滤器更新为,

from rest_framework import viewsets
<b>from django_filters import rest_framework as filters</b>


class FooViewSet(viewsets.ModelViewSet):
    queryset = Foo.objects.all()
    serializer_class = Foo_Serializer
    filter_backends = (<b>filters.DjangoFilterBackend,</b>)
    <b>filterset_fields</b> = ('foo_bar', 'bar_foo')

注意: filter_fields 属性更改为 filterset_fields 在 django-filter

的较新版本中