JPG
JPG

Reputation: 88629

ImportError: cannot import name 'DjangoFilterBackend'

After upgrading to Django REST framework 3.7 I got following error

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

and here is my view

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

Upvotes: 5

Views: 7612

Answers (1)

JPG
JPG

Reputation: 88629

rest_framework.filters.DjangoFilterBackend was depricated in DRF : 3.7.

So from DRF 3.7 onwards you should install django-filter package to use the DjangoFilterBackend in the views.


You can update the < DRF 3.6 style filters as,

from rest_framework import viewsets
from django_filters import rest_framework as filters


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

Note: the filter_fields attribute is chnaged to filterset_fields in newer versions of django-filter

Upvotes: 11

Related Questions