Filtering in my project not working (django restframework)

816 Views Asked by At

I'm building APIs with django and I have been trying to implement filtering into the system but the filter option just brings back all the list. Below is my codes

view.py

from unicodedata import name
from django.shortcuts import render, get_object_or_404
from rest_framework import generics, status
from rest_framework.response import Response
from django_filters.rest_framework import DjangoFilterBackend
from .serializers import DailySalesSerializer, DailySalesCreateSerializer
from .models import DailySales

# Create your views here.

class DailySalesListView(generics.GenericAPIView):
    serializer_class = DailySalesSerializer
    queryset = DailySales.objects.all()
    name = 'Daily Sales List'
    filter_backends = (DjangoFilterBackend,)

    filterset_fields = ('id', 'customername','havepaid', 'datesold', 'itemsold')

    def get(self, request):
        sales = DailySales.objects.all()
        serializer = self.serializer_class(instance=sales, many=True)
        return Response(data=serializer.data, status=status.HTTP_200_OK)

I have also added django_filters to my settings.py

1

There are 1 best solutions below

1
On

You are not using filters if you overwrite get response like that, you should change

sales = DailySales.objects.all()

to

sales = self.filter_queryset(self.get_queryset())

or even better remove your get method and inherit from ListModelMixin so that Django will do listing and serializing for you