土曜:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'rest_framework',
'django_filters', # 追加
'rest_framework.authtoken',
'corsheaders',
'lottery_api.apps.LotteryApiConfig',
'lottery_batch.apps.LotteryBatchConfig',
]
# 追加
REST_FRAMEWORK = {
'DEFAULT_FILTER_BACKENDS': ['django_filters.rest_framework.DjangoFilterBackend']
}
- filters.pyを新規作成(timesをフィルタリングしたい場合)
from django_filters import rest_framework as filters
from lottery_api.models import (
LotoSeven,
)
class LotoSevenFilter(filters.FilterSet):
times = filters.RangeFilter(field_name='times')
class Meta:
model = LotoSeven
fields = ['times']
# 汎用APIView ListAPIView (リストを取得するだけの用途)他にもCreateAPIViewとかがある
class LotoSevenListView(generics.ListAPIView):
queryset = LotoSeven.objects.all()
serializer_class = serializers.LotoSevenSerializer
filter_class = LotoSevenFilter # 追加
def get_queryset(self):
return self.queryset.order_by('times')