Ошибка импорта: невозможно импортировать имя 'DjangoFilterBackend' - PullRequest
2 голосов
/ 23 мая 2019

После обновления до 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')

1 Ответ

3 голосов
/ 23 мая 2019

rest_framework.filters.DjangoFilterBackend было исключено из DRF: 3,7 .

Таким образом, начиная с DRF 3.7 и далее, выследует установить пакет 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-фильтр

...