猫でもわかるWebプログラミングと副業

本業エンジニアリングマネージャー。副業Webエンジニア。Web開発のヒントや、副業、日常生活のことを書きます。

'OrderingFilter' object has no attribute 'filter_queryset' エラーの対処法

f:id:yoshiki_utakata:20210221170223p:plain

view で import している OrderingFilter のクラスが間違っている

ダメな例

  • from django_filters.rest_framework import OrderingFilter
  • from django_filters.filters import OrderingFilter



正解はこっち

from rest_framework.filters import OrderingFilter



django_filters の方ではなくて把握て、ではなくて、 rest_framewrok.filters を使わなければならない。



全体を見るとこんな感じ

from rest_framework import viewsets
from rest_framework.filters import OrderingFilter



class HogeViewSet(viewsets.ReadOnlyModelViewSet):
    queryset = Hoge.objects.all()
    serializer_class = HogeSerializer
    filter_backends = [OrderingFilter]
    ordering_fields = ['fuga', 'piyo']